152. Maximum Product Subarray
題目網址:https://leetcode.cn/problems/maximum-product-subarray/
題意:給一整數 array
nums
, 找出乘積最大的非空連續 subarray, 並返回該乘積。
Solution:
想法:定義乘積為區間
[0, i]
中的最大 or 最小乘積。為何乘積必須同時記錄curMax
和curMin
?因為 array 中可能會有負數, 且負負得正。當nums[i]
為負數時, 之前紀錄的curMax
乘它之後變最小值, 也有可能之前紀錄的curMin
乘它之後變比之前的curMax
還大。所以當nums[i]
為負數時, 要將curMax
和curMin
做 swap, 這樣才不會出錯
class Solution { |
- time:$O(n)$ ➔ for loop
- space:$O(1)$ ➔ 只需常數空間
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Zako's Blog!
評論