LintCode 41 最大子陣列
阿新 • • 發佈:2019-01-03
題目: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;
}