1. 程式人生 > 其它 >152. 乘積最大子陣列

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;
    }
};

正確的: