1472. Design Browser History - Medium 前往題目 想法 Double linkedlist 思路簡單的一道題,但要細心 自己寫一個class,可以儲存上一個和下一個node藉此組成有雙向連接的list visit: 在尾巴加一個新的node back: 往後直到步數為零或是到頭了 forward: 往前直到步數為零或是到底了 Codeclass BrowserHistory { private class 2024-09-29 Leetcode > Medium #Stack #Leetcode #心得 #Array #Linked List #Design #Data Stream #Doubly-Linked List
160. Intersection of Two Linked Lists - Easy 前往題目 想法 Hashset Two pointers 思路 兩個指針,分別給a和b 循環直到這兩個指針指向同一個元素 每次循環都檢查是否指到null,是的話就代表這個list比較短,所以該指針移到另一個list的開頭(如此一來就可以完美解決兩個list長度不一的問題,因為短的會多走一點路等長的追上來) Code網友解答(內含圖解) public class Solution { 2024-09-27 Leetcode > Easy #Leetcode #心得 #Two Pointers #Hash Table #Linked List
367. Valid Perfect Square - Easy 前往題目 想法 經典的Binary Search 思路 經典Binary Search Codeclass Solution { public boolean isPerfectSquare(int num) { int l = 1, r = num; while (l <= r) { in 2024-09-27 Leetcode > Easy #Leetcode #心得 #Math #Binary Search
2300. Successful Pairs of Spells and Potions - Medium 前往題目 想法 暴力解很直觀 可以先排序,這樣就可以用Binary Search找那個最弱的藥水 思路 排序藥水,從大到小 一個咒語一個咒語循環 每個咒語都用二元搜尋去找第一個success的藥水,找到就可以知道總共有幾個藥水可以成功 每個咒語都檢查過就可以得到答案 Code網友解答 class Solution { public int[] successfulPairs 2024-09-25 Leetcode > Medium #Leetcode #心得 #Array #Two Pointers #Sorting #Binary Search
977. Squares of a Sorted Array - Easy 前往題目 想法 暴力解也只要n + nlognhe 思路 雙指針,從大排到小,因為這樣左右指針可以在最左和最右 Code class Solution { public int[] sortedSquares(int[] nums) { int[] res = new int[nums.length]; int 2024-09-25 Leetcode > Easy #Leetcode #心得 #Array #Two Pointers #Sorting
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