【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;
}
};
相關文章
- 【DP】乘積最大子陣列陣列
- LeetCode-152-乘積最大子陣列LeetCode陣列
- leetcode 152 乘積最大子序列LeetCode
- 子陣列的乘積陣列
- LeetCode-238-除自身以外陣列的乘積LeetCode陣列
- LeetCode 238. 除自身以外陣列的乘積LeetCode陣列
- 【Leetcode刷題篇】leetcode152 乘積最大陣列LeetCode陣列
- LeetCode53. 最大子陣列和LeetCode陣列
- JZ-051-構建乘積陣列陣列
- 演算法題:乘積最大子序列演算法
- 《劍指offer》:[52]構建乘積陣列陣列
- 陣列1——求一個陣列的最大子陣列陣列
- 獲取陣列中子串乘積的最大值陣列
- LeetCode3264[K次乘運算後的最終陣列I]LeetCode陣列
- 【刷題筆記】LeetCode-53 最大子陣列和筆記LeetCode陣列
- 力扣 - 劍指 Offer 66. 構建乘積陣列力扣陣列
- 53. 最大子陣列和陣列
- 求二維陣列中最大子陣列的和陣列
- oracle按列求乘積(轉)Oracle
- 迴圈陣列最大子段和陣列
- Leetcode 陣列中和為給定值的最長子陣列LeetCode陣列
- 最大子陣列問題(Maximum subarray problem)陣列
- 最大子陣列和問題的解陣列
- 【力扣】最大子陣列和(貪心)力扣陣列
- [Python手撕]最大子陣列和Python陣列
- 53_Maximum Subarray-最大子陣列陣列
- 求最大子陣列(貪心演算法)陣列演算法
- leetcode-陣列中兩元素的最大乘積(Java)LeetCode陣列Java
- 關於多項式的加和、乘積可用連結串列和陣列陣列
- LeetCode | 152. Maximum Product SubarrayLeetCode
- 最大連續子陣列和(最大子段和)陣列
- [LeetCode] Maximum Product Subarray 求連續子陣列的最大乘積LeetCode陣列
- 最大子矩陣和矩陣
- 53、最大子陣列和 | 演算法(leetcode,附思維導圖 + 全部解法)300題陣列演算法LeetCode
- 一道題把我氣笑了:) 力扣.53 最大子陣列和 leetcode maximum-subarray力扣陣列LeetCode
- JS陣列遍歷和獲取陣列最值JS陣列
- 【矩陣求導】關於點乘 (哈達瑪積)的矩陣求導矩陣求導點乘
- LeetcodePractice-陣列LeetCode陣列