69. Sqrt(x) - Easy 前往題目 想法 Binary Search 思路 在0~x之間搜尋 如果當前位置平方小於x那就往右繼續找 如果大於,就往左邊(更小的數字)找 最後收斂的位置左邊就是答案,因為無條件捨去小數 Codeclass Solution { public int mySqrt(int x) { if (x == 0) return 0; if 2024-09-24 Leetcode > Easy #Leetcode #心得 #Math #Binary Search
540. Single Element in a Sorted Array - Medium 前往題目 想法 Binary Search 思路規律是只要pair第一個數字不在偶數位上,就代表當前位置已在單一個數字之後,所以規律被打亂了 例如:[1, 1, 3, 3, 2, 4, 4],1和3組合是第一個在偶數位,第二個在奇數位,當單一數字2出現後,組合4的位置就被打亂了,變成第一個數字在奇數位,而第二個數字在偶數位。因為只有一個單一數字,所以規則一定會被打亂 binary searc 2024-09-24 Leetcode > Medium #Leetcode #心得 #Array #Binary Search
1268. Search Suggestions System - Medium 前往題目 想法 排好之後,Binary Search匹配searchWord,但有可能原本匹配的那些多加一個searchWod字母後就全部不匹配了,反而是最後面的匹配,這部分不知道怎麼解決 思路解決辦法就是把區間找出來,一個一個找,慢慢收斂區間 排序 一個字母一個字母來 雙指針,左右指針循環直到遇到匹配的字母,但要略過長度不夠的item,藉此判斷出區間 區間找出後,直接把該區間加入答案裡 2024-09-19 Leetcode > Medium #Leetcode #心得 #String #Array #Sorting #Trie #Binary Search #Heap (Priority Queue)
35. Search Insert Position - Easy 前往題目 想法 基本的Binary Search 思路 Binary Search 如果沒找到,就回傳左指針(右指針也可以因為沒找到一定收斂在同一個index) Code一次過,就是注意回傳條件而已 class Solution { public int searchInsert(int[] nums, int target) { int l = 2024-09-19 Leetcode > Easy #Leetcode #心得 #Array #Binary Search
81. Search in Rotated Sorted Array II - Medium 前往題目 想法 Binary Search 先找pivot 思路 Binary Search 搜尋的時候判斷mid是在哪個部分,左還是右,然後再判斷target是否在範圍裡,這樣才能確切知道到底要往左還是右搜尋 原本以為要先找出pivot,這題的關鍵是找到方法確切判斷要往左還是往右找,因為有可能左、中、右的數字都一模一樣,而解決辦法就是只能一格一格移動 Codeclass Solution 2024-09-18 Leetcode > Medium #Leetcode #心得 #Array #Binary Search
116. Populating Next Right Pointers in Each Node - Medium 前往題目 想法 用Breadth-First Search 思路 Breadth-First Search 搜尋的時候建立next指針,因為每次循環都剛好是整層,疊代整層的時候順便把指針也設定好了 Code一陣子沒寫BFS了,但還記得! class Solution { public Node connect(Node root) { if (ro 2024-09-18 Leetcode > Medium #Leetcode #心得 #Binary Tree #Depth-First Search #Breadth-First Search #Linked List #Tree
Designing Data-Intensive Applications - 第一章筆記 Reliable, Scalable, and Maintainable Applications 前面還有一些基礎內容略過 Describing Performance延遲(Latency)與回應時間(Response time)回應時間是客戶端看到的時間,包括處理請求的服務時間、網絡延遲和排隊延遲,而延遲則是指請求等待被處理的時間。即使是相同的請求,回應時間也會有變化,因此回應時間應被視為一 2024-09-18 軟體工程 > 軟體設計 #Data #Reliability #Scalability #Maintainability #Fault-tolerance #Performance measurement
2616. Minimize the Maximum Difference of Pairs - Medium 前往題目 想法 Binary Search 搜尋diff 思路 二元搜尋最小的最大差 如果這個差invalid就往大的找 如果valid就往更小的試 判斷是否valid只要搜尋整個陣列,pair by pair如果找到比當前搜尋的差還小或相等,而且滿足目標對數(pairs),那就回傳true,否則就代表這個差太小了,要往更大的找 Code第一次寫的思路幾乎一樣,但在判斷valid的條件時有點 2024-09-17 Leetcode > Medium #Leetcode #心得 #Array #Greedy #Binary Search
1898. Maximum Number of Removable Characters - Medium 前往題目 想法 Binary Search 找最大k,所以搜尋k 思路 每次選定k 檢查移除前k個是否結果依然成立,也就是segment是否還存在於原本的字串 需要n次(s的總字數)來判斷是否segment存在,還需要log k次(因為Binary Search)去試要去除幾個,所以複雜度是$n \cdot \log k$ Codeclass Solution { publ 2024-09-16 Leetcode > Medium #Leetcode #心得 #String #Array #Two Pointers #Binary Search
374. Guess Number Higher or Lower - Easy 前往題目 想法 就是最基本的Binary Search 思路同想法 Codepublic class Solution extends GuessGame { public int guessNumber(int n) { // 1 ~ n int l = 1, r = n; while (l <= r) 2024-09-16 Leetcode. Easy #Leetcode #心得 #Binary Search #Interactive