328. Odd Even Linked List - Medium 前往題目 想法 這題要求把linkedlist,重新排成奇數項node在前,偶數項node在後,同時維持他們的相對順序 思路 odd和even指針分別指著奇數項和偶數項 藉由觀察可以看到odd的下一項一定是even指針的下一項,而even的下一項一定是even的下下項 拼接後再移動指針 最後odd拼上even WA的code不難,但是指針操作還是有點問題 class Solution 2023-12-19 Leetcode > Medium #Leetcode #心得 #Linked List
189. Rotate Array - Medium 前往題目 想法 這題以前做過,有個想法很簡單而且還是in-place但是想不起來 思路看了一下以前的submission,恍然大悟,就是先全部反轉,然後反轉左半部,再反轉右半部 Codeclass Solution { public void rotate(int[] nums, int k) { k %= nums.length; 2023-12-19 Leetcode > Medium #Leetcode #心得 #Array #Math #Two Pointers
128. Longest Consecutive Sequence - Medium 前往題目 想法 沒什麼頭緒,用tree好像也怪怪的,因為沒辦法馬上判斷是否連貫 題目看起來很簡單,所以應該有一個很好用的演算法 思路這題的關鍵: 使用Set 把array轉換成set 尋找sequence的開頭(也就是左邊沒有相鄰的數字,例如2如果是開頭,那set中絕對不會有1) 找到開頭後,+1+1的找該sequence有多長 Code class Solution { 2023-12-18 Leetcode > Medium #Leetcode #心得 #Array #Hash Table
113. Path Sum II - Medium 前往題目 想法 需要有額外的儲存空間存放每個node為止的sum,防止重複運算,我想hashtable應該可以 或是這題可能可以用backtracking,這樣也能記錄路徑 思路 dfs檢查每一條路徑 到leaf後返回時要從path刪掉最後的node(backtracking) Code還算是有想出來,使用backtracking,邏輯部分有點小bug 參考了這個解答 class Solut 2023-12-18 Leetcode > Medium #Leetcode #心得 #Binary Tree #Depth-First Search #Tree #Backtracking
278. First Bad Version - Easy 前往題目 之前寫過,照搬一下 想法 沒想到是binary search,這部分覺得有點失望 但我連100題都還沒寫到,就不苛責自己了 思路 沒什麼好說的,就是binary search,因為只要找到第一個true,後面就都不用看了 Codepublic int firstBadVersion(int n) { int l = 0, r = n; // Bi 2023-12-17 Leetcode > Easy #Leetcode #心得 #Binary Search
232. Implement Queue using Stacks - Easy 前往題目 這題做過,照搬一下 想法 這題一開始題目條件沒看清楚所以想破頭腦也想不出一個stack怎麼實作queue 看了解法覺得調用的方法就是個死循環,放到vscode一步一步看馬上就知道原因了 是因為有些方法是直接調用stack的,所以其實很簡單 的確是Easy的題目,但沒想通就永遠都是hard 思路 這裡使用兩個stack,一個input負責儲存資料,一個output負責還原成queue然 2023-12-17 Leetcode > Easy #Leetcode #心得 #Stack #Queue
141. Linked List Cycle - Easy 前往題目 之前寫過,照搬一下 想法 這題之前寫過,這次還是看提示才能想起來 沒什麼困難點,只要知道用快慢指針就行 思路 新建快慢指針 慢指針一次走一個node,快指針一次走兩個node 如果有cycle一定會碰在一起 Codepublic boolean hasCycle(ListNode head) { // When only 1 node of the list 2023-12-16 Leetcode > Easy #Leetcode #心得 #Two Pointers #Linked List
24. Swap Nodes in Pairs - Medium 前往題目 想法 每個node重新指向就好 要從最後面開始,不然會指到錯的 思路 兩個指針 照著規律交換,然後謹慎處理pointer Code和我想的不太一樣,是可以直接從頭開始,謹慎處理指針和條件就不會null pointer 最有可能出錯的地方就是要存nextPair的時候,但while的條件使得curr.next.next頂多就是null而已,不會出錯 class Solution 2023-12-16 Leetcode > Medium #Leetcode #心得 #Recursion #Linked List
207. Course Schedule - Medium 前往題目 題目心得搬運 心得 沒想到是用graph的形式 沒想到是只要看有沒有cycle就行 而且還能用DFS或是BFS,但因為沒想到是graph所以正常😂 由此可見敏銳度須繼續培養,畢竟目前才寫了50題左右 數組與圖之間的關係比較難想像 思路 每個course都有自己的prerequisites,因此需要數組的數組以便放入各課程的prerequisite 取得每個課程的prerequisi 2023-12-15 Leetcode > Medium #Leetcode #心得 #Depth-First Search #Graph #Topological Sort
210. Course Schedule II - Medium 前往題目 想法 記得之前有寫過簡單版的,回去看了一下對於這題依舊沒有太大的頭緒,不知道該怎麼改 思路重點是不能修所有課業的時候就是出現Cycle的時候 記錄所有課的必修課 對每門課進行DFS,找看看有沒有cycle,沒有的話就加到答案裡;訪問過的課程也不用再檢查一次了 Neetcode大大的解釋非常清楚,看不懂的時候可以參考 Code class Solution { 2023-12-15 Leetcode > Medium #Leetcode #心得 #Depth-First Search #Graph #Topological Sort