152. 乘积最大子数组

又是一次失败的思路,这是因为我想到了用动态规划,但是我的动态规划很拉
答案的动态规划

但是我又分析了一下,因为都是整数,负数个数为偶数则全部相乘,因为为整数,为正就只管乘了,为奇则只乘两端负数其中一个
我想到了最大连续加,是找到只要没有小于0就继续加,就还有价值,记录最大值即可。这是只要一直乘,最后为正即可
虽然我觉得我的够精妙,但是我觉得还是不如答案,看了答案自己默写一遍
max_element(begin(),end())获取最大值地址
错的代码:
class Solution {
public:
int maxProduct(vector<int>& nums) {
int result=-10000000000;
vector<vector<int>>v(nums.size(),vector<int>(nums.size(),0));
for(int i = 0 ;i < nums.size();i++){
v[i][i] = nums[i];
if(v[i][i]>result)
result = v[i][i];
for(int j=i+1 ; j< nums.size();j++){
v[i][j] = v[i][j-1]*nums[j];
if(v[i][j]>result)
result = v[i][j];
}
}
return result;
}
};

正确的:


浙公网安备 33010602011771号