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
110. Balanced Binary Tree - Easy 前往題目 這題也是做過的 心得 這題的考點就是如何有效遍歷 想了十分鐘,曾經有想過484直接用遞迴然後紀錄每個節點的高度 因為想不出來怎麼實作,於是直接看解答,還真的是我想的這個樣子 結論就是對於遞迴還不是非常熟 思路 樹遞迴每個節點 紀錄left和right的高度 比較每個左子樹以及右子樹的高度,如果大於1那整個tree就不是balanced binary tree Codeprivate 2023-12-13 Leetcode > Easy #Leetcode #心得 #Binary Tree #Depth-First Search #Tree
973. K Closest Points to Origin - Medium 前往題目 這題之前寫過心得,照搬一下 心得 這題非常妙,用到的資料結構也不一樣,只要知道如何使用就很簡單 使用MinHeap或是MaxHeap就可以完美解決 使用MaxHeap的時間複雜度更好一點 PriorityQueue會根據Comparator來排序,排序時間是logN(因為使用heap,樹結構),N是項數 思路 (以MinHeap為例子) 新建一個MinHeap 把point都放入mi 2023-12-13 Leetcode > Medium #Leetcode #心得 #Array #Heap #Priority Queue
300. Longest Increasing Subsequence - Medium 前往題目 想法 毫無頭緒因為不需要連續,中間可以斷掉… 思路有很多種作法: DFS DFS with cache DP 採用DP,因為$O(n^2)$,相較於DFS $O(2^n)$ 觀察規律,從後往前,因為最後一個一定是只有自己,也就是長度為1,以此往前推 影片中解釋得更清楚 Code class Solution { public int lengthOfLIS 2023-12-11 Leetcode > Medium #Leetcode #心得 #Array #Dynamic Programming
338. Counting Bits - Easy 前往題目 想法 毫無想法,只想得到轉成binary然後直接疊代 思路 觀察0~8的binary會發現有一定規律,如下圖 Offset從0,1,4,8,16,兩倍成長 只要1加上最近的offset的值就是答案,那個1就是MSB(Most significant bit) 可能看解是有點模糊,但是看code應該就會清楚很多了 Code class Solution { pub 2023-12-09 Leetcode > Easy #Leetcode #心得 #Dynamic Programming #Bit Manipulation