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!
評論
