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 #Greedy #Two Pointers #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 #Greedy #Two Pointers #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 #Greedy #Two Pointers #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
2348. Number of Zero-Filled Subarrays - Medium 前往題目 想法 想法大致和以下答案一樣,但有點複雜(例如n個連續零,就加上n + n - 1 + n - 2 + ... + 0) 思路 走過所有數字 每次遇到0,計數器+1,result直接加上當前zero的數量 因為如果00,subarray有1+2個;000,subarray有1+2+3個,以此類推 Code class Solution { public long 2024-05-30 Leetcode > Medium #Leetcode #心得 #Array #Math
2001. Number of Pairs of Interchangeable Rectangles - Medium 前往題目 想法 只能往後找相同ratio 思路關鍵點是遇到當前ratio,直接加上之前走過的相同ratio數量 走過所有num 計算當前ratio 加上這個ratio的數量(因為是往前搭配),並且更新此ratio的數量 還有另一種做法是利用數學公式,但那樣就太specific的解法,所以選擇general的 Code class Solution { public lo 2024-05-30 Leetcode > Medium #Leetcode #心得 #Array #Math #Hash Table #Counting #Number Theory
665. Non-decreasing Array - Medium 前往題目 想法沒想法的一題,看起來很簡單,不過有好多edge case要考慮 思路 走過所有num 兩兩一組看,non-decreasing的話就直接continue 如果已經用了一次change就回傳false 如果當前的下一個比當前的上一個還大,那當前的就變成和下一個一樣大就可以了,例如3, 5, 4 反之,下一個變得和當前一樣大就可以,例如4, 5, 3 Code class Solu 2024-05-29 Leetcode > Medium #Leetcode #心得 #Array
496. Next Greater Element I - Easy 前往題目 想法 暴力解,用hashmap然後在nums2一個一個看 思路 用hashmap儲存nums1中num和index的映射 疊代nums2 每次都檢查是否比stack的最上層還要大,如果是的話就pop,然後繼續比下一個上層,直到stack沒東西或是沒有比他大了,然後每次操作都要把該num放到相對應的index(藉助hashmap可以得知) 最後如果當前數字有在nums1裡面代表需要找尋 2024-05-25 Leetcode > Easy #Leetcode #心得 #Stack #Array #Monotonic Stack #Hash Table
2483. Minimum Penalty for a Shop - Medium 前往題目 想法 sliding windows? 要看有幾個n幾個y 思路實際上就是算出每個位置的prefix_n和postfix_y,因為沒有客人來沒有關店會penalty,相反的,有客人卻已經關店也要penalty 紀錄prefix_n,但不用包含當前 紀錄postfix_y,要包含當前 然後再疊代每個位置,把prefix和postfix加起來找出最小值,並回傳其index Code 2024-05-24 Leetcode > Medium #Leetcode #心得 #String #Prefix Sum