繼續解leetcode保持進度,有幾題是之前解過類似類型的題目。
House Robber
給一個數組,小偷不能間隔偷,否則觸發警報,獲取最大利益。
解法
參考刷題筆記4之前的解法。 逆著迭代解,紀錄偷與不偷的金額用來動態規劃, 最後會有一開始偷與不偷所獲得的金額並且回傳最大值。
Shortest Unsorted Continuous Subarray
給予一個陣列,找出需要排序的子陣列大小。
這題可以透過如刷題筆記3堆疊
的方式解決。leetcode也有給出空間複雜度為O(1)
的結法,不過作為複習這邊採用堆疊解決。
透過兩個方向的堆疊,來找出需要排序的左邊與右邊之後相減得出答案。 注意的是當中有重複的值,若在子數組當中為最大(或最小)的數值重複, 應該注意邊界避免計算多餘的值。注意完全升序與完全降序的情形, 以及左右側有子陣列****最大值或最小值。
LeetCode Dynamic programming Stack