209. Minimum Size Subarray Sum - Medium 前往題目 想法 明顯是sliding window問題 思路 左右指針 從零開始,每次加上當前數字 如果大於或等於target,紀錄最小值,並且移動左指針直到當前總和小於target,才進入下一循環 Code 自己嘗試寫這題時移動左指針的時機沒有寫好,有小bug class Solution { public int minSubArrayLen(int target, 2024-07-22 Leetcode > Medium #Leetcode #心得 #Array #Binary Search #Sliding Window #Prefix Sum
1888. Minimum Number of Flips to Make the Binary String Alternating - Medium 前往題目 想法 Sliding window 思路 原本的字串加上自己,這樣走過所有window等於把所有s的可能性都走過了 另外準備兩個字串alt1和alt2,與s等長,是alternating binary string sliding window從s最左邊開始,與alt1以及alt2相比,紀錄有多少個不同(diff) 每次循環如果超過s的長度,縮小 如果和s等長,紀錄diff最小值 2024-07-22 Leetcode > Medium #Leetcode #心得 #String #Greedy #Dynamic Programming #Sliding Window
1456. Maximum Number of Vowels in a Substring of Given Length - Medium 前往題目 想法 雙指針,sliding window 思路 左右指針 每個循環都檢查右指針的字是不是母音 是的話增加count 超出k時縮短窗口 更新最大count Code class Solution { public int maxVowels(String s, int k) { int l = 0; int count 2024-07-18 Leetcode > Medium #Leetcode #心得 #String #Sliding Window
904. Fruit Into Baskets - Medium 前往題目 想法 找連續最多的區間,但可以容忍有一種不一樣的 思路sliding window的一大重點: shrink 右指針疊代整個陣列,左指針視情況移動 每次疊代都把當前水果放入籃子 如果invalid,shrink直到valid 更新長度 結束疊代回傳結果 Code class Solution { public int totalFruit(int[] frui 2024-07-16 Leetcode > Medium #Leetcode #心得 #Array #Hash Table #Sliding Window
1838. Frequency of the Most Frequent Element - Medium 前往題目 想法 Sliding window 思路 排序,由小到大 左右指針都從0開始 每次紀錄當前總數 當window不合法時要移動左指針 如果當前window較大,選擇其為新的最大值 每個循環都移動右指針 這題的關鍵是如何判斷window不合法 Code class Solution { public int maxFrequency(int[] nums, int 2024-07-15 Leetcode > Medium #Leetcode #心得 #Array #Greedy #Sorting #Binary Search #Sliding Window #Prefix Sum
2962. Count Subarrays Where Max Element Appears at Least K Times - Medium 前往題目 想法 先找出最大值 Sliding window 思路 先找到最大值 以右指針疊代整個陣列 遇到最大值,計數+1 與左指針維持合法的window,不合法就要移動左指針直到合法 當window的最大值有k個,紀錄有幾個subarray 這題在最後卡很久,原來是要用long回傳 Code class Solution { public long countSubar 2024-07-14 Leetcode > Medium #Leetcode #心得 #Array #Sliding Window
219. Contains Duplicate II - Easy 前往題目 想法 Sliding window 思路 走訪nums 使用sliding window,用hashset記錄數字 當window大於k,移除左指針數值,並且移動左指針 如果找到重複的數字,就回傳true Code class Solution { public boolean containsNearbyDuplicate(int[] nums, int k) 2024-07-12 Leetcode > Easy #Leetcode #心得 #Array #Hash Table #Sliding Window
1578. Minimum Time to Make Rope Colorful - Medium 前往題目 想法 雙指針 思路 雙指針,循環整個字串 每次循環檢查字符是否相同 相同時紀錄所需時間,移動左指針 不同時只移動指針 Code class Solution { public int minCost(String colors, int[] neededTime) { int l = 0, r = 1; int res 2024-07-10 Leetcode > Medium #Leetcode #心得 #String #Array #Greedy #Dynamic Programming
1750. Minimum Length of String After Deleting Similar Ends - Medium 前往題目 想法 雙指針 思路 雙指針,指向兩端 當l指針小於r,也都指向同樣的字符,持續循環 每個循環都盡可能的移動左指針和右指針 輸出剩下幾個字符 Codeclass Solution { public int minimumLength(String s) { int l = 0, r = s.length() - 1; // 2024-07-09 Leetcode > Medium #Leetcode #心得 #String #Two Pointers
1984. Minimum Difference Between Highest and Lowest of K Scores - Easy 前往題目 想法 雙指針 思路 排序後,左右鄰居都是最靠近自己的 根據k定義sliding window雙指針 疊代整個陣列找出最小值 Codeclass Solution { public int minimumDifference(int[] nums, int k) { Arrays.sort(nums); 2024-07-09 Leetcode > Easy #Leetcode #心得 #Array #Sorting #Sliding Window