88. Merge Sorted Array - Easy 前往題目 想法 雙指針 思路只要把nums1真正的數字們複製到一個新的陣列就很好操作了,這個操作時間只要+m次 把nums1真正的數字複製到新的陣列 三個指針分別指向:新的nums1陣列、原nums1、nums2 疊代原先的nums1陣列 每次用雙指針比較數字,並放入nums1 不難的題目,但是寫條件的時候要小心 Codeclass Solution { public v 2024-07-05 Leetcode > Easy #Leetcode #心得 #Array #Two Pointers #Sorting
7個好的API應該有的設計 1. Use clear naming例如: http://example.com/api/v1/carts/123 而不要 http://example.com/api/v1/cart/123 因為是一個集合的資料,而不是單個,這樣比較合乎邏輯 2. Ensure reliability through idempotent API無論執行多少次相同操作都要產生相同結果,避免問題產生 2024-07-04 #API #System Design
779. K-th Symbol in Grammar - Medium 前往題目 想法 Recursion? 思路把圖畫出來會發現是一個類似樹的結構,可以判斷是在左分支還是右分支每次都去除一半,直到k層 左右雙指針 疊代n-1次,因為第一次是起始點0,所以跳過 每次決定中點 並判斷k是否在中點的左邊或右邊 在左邊的話會和之前的數字一樣,而右邊會和之前的相反 最後直接輸出數字 /* 0 0 1 以及 1 1 0 可以看到左邊都和上面的數字一樣,右邊都和上面的 2024-07-04 Leetcode > Medium #Leetcode #心得 #Recursion #Math #Two Pointers #Bit Manipulation
2108. Find First Palindromic String in the Array - Easy 前往題目 想法 雙指針,每個單字都檢查一遍 思路秒殺題 雙指針,每個單字都檢查一遍 Codeclass Solution { public String firstPalindrome(String[] words) { // 疊代每個單字 for (String word : words) { 2024-07-04 Leetcode > Easy #Leetcode #心得 #String #Array #Two Pointers
1662. Check If Two String Arrays are Equivalent - Easy 前往題目 想法 雙指針,一對一對比較 思路自己寫出來了,不過應該可以再更簡潔一點,麻煩的就是出界問題而已 疊代所有word直到有一方或雙方都出界 每次都檢查是否為相同字母 相同就字母指針往前 檢查字母指針是否出界,如果出界就移動word指針,並且歸零字母指針 Codeclass Solution { public boolean arrayStringsAreEqual( 2024-07-04 Leetcode > Easy #Leetcode #心得 #String #Array
881. Boats to Save People - Medium 前往題目 想法 雙指針,因為最多兩人,所以蠻簡單的 思路 排序,由小到大 雙指針,最左和最右,一開始都先取當前可能的最大值 然後再判斷能否再取一個當前最小值 移動指針 Codeclass Solution { public int numRescueBoats(int[] people, int limit) { Arrays.sort(peopl 2024-06-26 Leetcode > Medium #Leetcode #心得 #Array #Two Pointers #Greedy #Sorting
948. Bag of Tokens - Medium 前往題目 想法 2 pointers,但怎麼利用這個規則是個問題 思路貪婪 排序,由小到大 雙指針,分別指向兩端 嘗試face up(因為可以增加score,也就是我們的最終目的,因此首選它),不行的話face down(並且是選擇右指針,因為要最大化power,才能有本錢face down),再不行直接回傳 Code class Solution { public i 2024-06-26 Leetcode > Medium #Leetcode #心得 #Array #Two Pointers #Greedy #Sorting
455. Assign Cookies - Easy 前往題目 想法 排序後從最小餅乾開始匹配 思路想法對了,實作有點小bug,馬上修好 兩個陣列都排序 如果餅乾不夠滿足當前小孩,換下一個餅乾,直到餅乾沒了或是小孩都滿足了 Codeclass Solution { public int findContentChildren(int[] g, int[] s) { Arrays.sort(g); 2024-06-02 Leetcode > Easy #Leetcode #心得 #Array #Two Pointers #Greedy #Sorting
1968. Array With Elements Not Equal to Average of Neighbors - Medium 前往題目 想法 把數字小於等於中位數的都放到奇數位,其餘放到偶數位 思路 排序 小和大的數字交錯,這樣每個數字就會被比他自己大的兩個數字包圍或是兩個比他自己小的數字包圍,所以可以保證絕對不會等於兩數相加除二 Code class Solution { public int[] rearrangeArray(int[] nums) { Arrays 2024-06-02 Leetcode > Medium #Leetcode #心得 #Array #Greedy #Sorting
18. 4Sum - Medium 前往題目 想法 3 sum是固定一個數字,然後就變成2 sum問題;那4 sum要固定兩個數字? 思路 先排序(這樣才能輕鬆跳過重複的數字) 當不確定的數字超過2個,就固定當前數字然後再次呼叫方法(Recursion) 當不確定的數字只剩2個,就變成2sum問題,找出哪兩個相加等於target就是答案之一並加入結果 Code class Solution { List&l 2024-06-01 Leetcode > Medium #Leetcode #心得 #Array #Two Pointers #Sorting