994. Rotting Oranges - Medium 前往題目 之前的文章 想法 BFS 思路實作的時候條件判斷卡住,一段時間沒寫生疏了 取得有幾個新鮮橘子(這樣才能知道要感染幾個),以及初始的爛橘子在哪 BFS只關心腐爛橘子,感染其上下左右的橘子,直到感染所有橘子,或是觸碰不到剩餘的橘子 如果還有剩餘新鮮橘子就回傳-1,反之回傳過了幾分鐘 Codeclass Solution { public int orangesRot 2024-02-03 Leetcode > Medium #Leetcode #心得 #Array #Matrix #Breadth-First Search
2024. Maximize the Confusion of an Exam - Medium 前往題目 思路1004題的進階 sliding window 重複兩遍循環,一次是把T當作基準,也就是翻轉成T,一次是把F當作基準 Code class Solution { public int maxConsecutiveAnswers(String answerKey, int k) { int res = 0; int i 2024-02-01 Leetcode > Medium #Leetcode #心得 #String #Binary Search #Sliding Window #Prefix Sum
1004. Max Consecutive Ones III - Medium 前往題目 思路 看到subarray基本上是用sliding window 看到可以翻轉k個,基本上可以用dp sliding window 如果遇到1,就紀錄長度 如果遇到0,就紀錄當前幾個0,超過k的話把左邊指針右移直到0的個數小於等於k,然後再紀錄一下長度 Code官神影片同時講了dp和sliding window,dp在這題不太可行是因為需要用到二維陣列,這樣nums.length 2024-02-01 Leetcode > Medium #Leetcode #心得 #Array #Binary Search #Sliding Window #Prefix Sum
3. Longest Substring Without Repeating Characters - Medium 前往題目 搬運以前的文章 想法 這題也沒寫出來,有嘗試用2 pointers和hashmap做,但失敗了 解法也看了半小時才懂,卡在為甚麼要remove那個character,當發現有同樣的時候 原因是因為那整個substring都不能要了,也記錄了長度,所以會逐漸remove 思路 Set儲存substring Sliding window char沒在set裡面的話就加進去,然後看看有沒有 2024-01-31 Leetcode > Medium #Leetcode #心得 #String #Hash Table #Sliding Window
121. Best Time to Buy and Sell Stock - Easy 前往題目 之前寫的文章 思路 sliding window high指針一直往右,遇到low指針的值比high還大就把low直接移過去high,代表找到更小值了 Codeclass Solution { public int maxProfit(int[] prices) { int low = 0, high = 0; int re 2024-01-31 Leetcode > Easy #Leetcode #心得 #Array #Dynamic Programming
11. Container With Most Water - Medium 前往題目 之前寫的文章 思路 2 pointers 只移動短的那邊,才有機會有更大的值 Codeclass Solution { public int maxArea(int[] height) { int l = 0, r = height.length - 1; int res = Integer.MIN_VALUE; 2024-01-31 Leetcode > Medium #Leetcode #心得 #Array #Greedy #Two Pointers
125. Valid Palindrome - Easy 前往題目 之前寫的Medium文章 思路 2 pointers 遇到不是letter或digit的直接移動指針然後進到下一個循環 遇到是的話直接判斷是否相同,注意letter的話要轉成lowercase或uppercase Codeclass Solution { public boolean isPalindrome(String s) { int 2024-01-30 Leetcode > Easy #Leetcode #心得 #String #Two Pointers
167. Two Sum II - Input Array Is Sorted - Medium 前往題目 想法 2 pointers 每種組合都試,但兩數之合一旦超過target直接跳過當前left pointer 思路 左右指針,一個指起點一個指終點 當左右指針之和小於target,代表要讓和變大才有可能符合target,所以要移動左邊的pointer往右,移動右邊的會出界 反之,移動右邊的往左,因為往右就算沒出界,和會變更大 題目保證了一定有解,所以往內縮到最後一定會找到解 Cod 2024-01-30 Leetcode > Medium #Leetcode #心得 #Array #Two Pointers #Binary Search
78. Subsets - Medium 前往題目 之前寫過了,這次一看到就知道要用backtracking但是細節漏了一點 想法 用backtracking 思路 每次疊代加入當前array到答案裡 並且用下一個num繼續呼叫backtrack 循環結束前把最後一位去掉 傳i + 1的原因是讓演算法不要取到同一個數字 Codeclass Solution { List<List<Integer>> r 2024-01-29 Leetcode > Medium #Leetcode #心得 #Array #Bit Manipulation #Backtracking
743. Network Delay Time - Medium 前往題目 思路可用任意找最小路徑算法 建立鄰接表 利用BFS疊代起始點出發的每一層node並更新最短路徑 最後因為要知道所有node都接收到signal需要多少時間,所以取最大值 Code 以下是來自discussion的答案,比較好理解,沒有用到priority queue class Solution { /* Step 1: Create a Map of star 2024-01-29 Leetcode > Medium #Leetcode #心得 #Depth-First Search #Breadth-First Search #Graph #Heap (Priority Queue) #Shortest Path