【Leetcode】152.乘積最大子陣列
題目描述:
給你一個整數陣列 nums ,請你找出陣列中乘積最大的連續子陣列(該子陣列中至少包含一個數字),並返回該子陣列所對應的乘積。
示例 1:
輸入: [2,3,-2,4]
輸出: 6
解釋: 子陣列 [2,3] 有最大乘積 6。
示例 2:
輸入: [-2,0,-1]
輸出: 0
解釋: 結果不能為 2, 因為 [-2,-1] 不是子陣列。
【題解】:
我不太會動態規劃,之前遇到過類似的問題,既有正數也有負數,如何求最大的值,問了身邊的人:同時儲存兩個值,一個最大值,一個最小值。列出狀態轉移方程,每一步記錄從0到當前位置i的最小值與最大值。最後選擇一個最大的值。
class Solution {
public:
int maxProduct(vector<int>& nums) {
int n = nums.size();
int a[n + 1][2];
a[0][0] = a[0][1] = nums[0];
int m = nums[0];
for (int i = 1; i < n; i ++ )
{
a[i][0] = max(nums[i], max(a[i - 1][0] * nums[i], a[i - 1][1] * nums[i]));
a[i][1] = min(nums[i], min(a[i - 1][0] * nums[i], a[i - 1][1] * nums[i]));
m = max(max(a[i][0], a[i][1]), m);
}
return m;
}
};
相關文章
- LeetCode-152-乘積最大子陣列LeetCode陣列
- 【DP】乘積最大子陣列陣列
- leetcode 152 乘積最大子序列LeetCode
- 【Leetcode刷題篇】leetcode152 乘積最大陣列LeetCode陣列
- LeetCode 238. 除自身以外陣列的乘積LeetCode陣列
- LeetCode-238-除自身以外陣列的乘積LeetCode陣列
- LeetCode53. 最大子陣列和LeetCode陣列
- JZ-051-構建乘積陣列陣列
- 【刷題筆記】LeetCode-53 最大子陣列和筆記LeetCode陣列
- LeetCode3264[K次乘運算後的最終陣列I]LeetCode陣列
- 演算法題:乘積最大子序列演算法
- 53. 最大子陣列和陣列
- Leetcode 陣列中和為給定值的最長子陣列LeetCode陣列
- 求二維陣列中最大子陣列的和陣列
- [Python手撕]最大子陣列和Python陣列
- LeetCode | 152. Maximum Product SubarrayLeetCode
- 力扣 - 劍指 Offer 66. 構建乘積陣列力扣陣列
- leetcode-陣列中兩元素的最大乘積(Java)LeetCode陣列Java
- 【力扣】最大子陣列和(貪心)力扣陣列
- 53_Maximum Subarray-最大子陣列陣列
- 最大子陣列問題(Maximum subarray problem)陣列
- oracle按列求乘積(轉)Oracle
- 53、最大子陣列和 | 演算法(leetcode,附思維導圖 + 全部解法)300題陣列演算法LeetCode
- 一道題把我氣笑了:) 力扣.53 最大子陣列和 leetcode maximum-subarray力扣陣列LeetCode
- 最大連續子陣列和(最大子段和)陣列
- LeetCode刷題—陣列LeetCode陣列
- 關於多項式的加和、乘積可用連結串列和陣列陣列
- LeetCode 189 旋轉陣列LeetCode陣列
- 【LeetCode-陣列】陣列式整數加法LeetCode陣列
- #1502 : 最大子矩陣矩陣
- leetcode 845. 陣列中的最長山脈 做題筆記LeetCode陣列筆記
- leetcode_最大子序和LeetCode
- leetcode 3366. 最小陣列和LeetCode陣列
- Leetcode——349-兩陣列交集LeetCode陣列
- LeetCode-189-旋轉陣列LeetCode陣列
- 【leetcode】252 會議室(陣列)LeetCode陣列
- leetcode題解(陣列問題)LeetCode陣列
- 【LeetCode】189. 旋轉陣列LeetCode陣列