1. 程式人生 > >LintCode 41 最大子陣列

LintCode 41 最大子陣列

題目:searchMatrix

要求:

給定一個整數陣列,找到一個具有最大和的子陣列,返回其最大和。
注意事項
子陣列最少包含一個數

樣例:

給出陣列[−2,2,−3,4,−1,2,1,−5,3],符合要求的子陣列為[4,−1,2,1],其最大和為6

演算法要求:

要求時間複雜度為O(n)

解題思路:

如果前面加起來的和小於0,那麼前面的拋棄即可。
就像撿東西,一直撿,並且跟撿的最有價值的時候比,如果撿的東西不好,就扔掉,然後繼續撿。

演算法如下:

    int maxSubArray(vector<int> nums) {
        // write your code here
int size = nums.size(); int max = nums[0]; int nowM = 0; for (int i = 0; i < size; i++) { nowM += nums[i]; if (nowM > max) { max = nowM; } if (nowM < 0) { nowM = 0; } } return
max; }