2. Add Two Numbers - Medium 前往題目 想法 每個digit都用數學式運算成一個數字,有個儲存的總數 思路看了Neetcode大大的影片才意識到要回傳的是Linked list😂又是題目沒看清楚,而且也沒意識到數字由後往前,其實題目給很多方便了 兩個list,一對一對的看,也就是一位數一位數的看 每個位數都算出值和進位的數字,值加到list裡,carry繼續給下一輪 建議看code,比較清楚 Codeclass So 2023-12-29 Leetcode > Medium #Leetcode #心得 #Recursion #Math #Linked List
55. Jump Game - Medium 前往題目 想法 以前做過,但完全忘了😂 思路 貪心演算法,從最後面開始 在每個index檢查是否能到goal,如果可以的話就把當前index變為goal goal最後為0的話就是可以到最後,否則一定不行 Code class Solution { public boolean canJump(int[] nums) { int goal = n 2023-12-28 Leetcode > Medium #Leetcode #心得 #Array #Greedy #Dynamic Programming
14. Longest Common Prefix - Easy 前往題目 想法 找到最長的那個,全部記錄下來,用hashmap,或是26空位的陣列 接著檢查其餘所有的String,每次都紀錄最小值,也就是如果第一個可以匹配到4個,第二個只能2個,那結果還是2 但是這樣有個問題,因為每個都是從0個開始算,那完全沒有的話就變成0是答案了… 廢棄Code class Solution { public String longestCommonP 2023-12-28 Leetcode > Easy #Leetcode #心得 #String #Trie
191. Number of 1 Bits - Easy 前往題目 想法 直覺想法是轉成string然後一個一個看,但這樣肯定是暴力解🤣 思路 &AND操作,或是%MOD操作,就可以判斷最後一位是不是1 判斷完後右移,直到n為0 這題真的簡單,但是需要Bit manipulation的概念 Code public class Solution { // you need to treat n as an unsigne 2023-12-27 Leetcode > Easy #Leetcode #心得 #Bit Manipulation
100. Same Tree - Easy 前往題目 想法 這題幾個月前做過,這次看到的第一個想法是檢查兩個樹,遇到左子樹就+1,右子樹就-1 思路其實不用這麼麻煩,直接同時檢查兩個樹就好,因為每個位置都要對應,值也要對應 Codeclass Solution { public boolean isSameTree(TreeNode p, TreeNode q) { // Successful 2023-12-27 Leetcode > Easy #Leetcode #心得 #Binary Tree #Depth-First Search #Tree
424. Longest Repeating Character Replacement - Medium 前往題目 思路關鍵是window長度減掉該window下最多字母的數量,剩下的字母就是必須替換的,所以最多只能k個 Sliding window,檢查每個字母,紀錄出現次數 當window的長度減掉最多count的字母,大於k的時候就超出規範了,因此要移動左指針 每次循環都更新一次最大長度,也就是window的長度 Code class Solution { public 2023-12-24 Leetcode > Medium #Leetcode #心得 #String #Hash Table #Sliding Window
658. Find K Closest Elements - Medium 前往題目 想法 因為是sorted,所以應該可以用binary search快速定位 思路這題有sliding window和結合了binary search的sliding window兩種解法,但我在評論區看到的binary search解法,無法理解其中一兩行code,所以選擇sliding window 左右兩個指針,頭與尾 每次計算左邊以及右邊到x的距離 相等或右邊比較大的時候就往 2023-12-23 Leetcode > Medium #Leetcode #心得 #Array #Two Pointers #Binary Search #Sliding Window
662. Maximum Width of Binary Tree - Medium 前往題目 思路 每個node都記錄其數字,左node都是parent的兩倍,右node都是parent的兩倍再加1 利用BFS疊代所有node 每層疊代完之後利用最邊的數字與最右邊的數字相減+1就是該層的寬度,檢查完每層之後就是答案 Code Java版本 class Solution { public int widthOfBinaryTree(TreeNode root 2023-12-23 Leetcode > Medium #Leetcode #心得 #Binary Tree #Breadth-First Search #Tree
525. Contiguous Array - Medium 前往題目 想法 沒什麼想法,看到subarray想到會不會是用sliding window,但貌似不是 思路 遇到0就-1,遇到1就+1,記錄每個index的sum 疊代的期間,遇到出現過的sum就更新最大subarray長度 簡單來說就是遇到同樣的sum的時候那兩個相同sum的index之間的0和1的數量一定是一樣的,可以參考以下影片所畫的圖 另外影片中分成0和其他總和來討論,但我覺得情況 2023-12-22 Leetcode > Medium #Leetcode #心得 #Array #Hash Table
394. Decode String - Medium 前往題目 想法 看到括號第一直覺是用stack 可能可以用兩個stack,一個存數字,一個存符號 思路這道題看了解答還是花了我兩小時左右,都在處理資料,而不是邏輯😂Java處理資料之間的轉換真的是麻煩 遇到右括號以外的符號或數字的時候直接push到stack裡面就好 遇到右括號就把[]裡的字符都存起來,然後再把數字k也存起來 把字符複製k次存進結果 繼續疊代直到把每個字符都檢查完 Cod 2023-12-20 Leetcode > Medium #Leetcode #心得 #Stack #String