题目描述
解题思路
em得承认自己参考了官网题解
第二次,感觉自己更稍微理解了,可以独立想到了 8.29
Java代码(8.29更)
class Solution {
public int maxSubArray(int[] nums) {
int len=nums.length;
int sum=nums[0], maxSum=nums[0];
for(int i=1;i<len;i++){
sum=Math.max(sum+nums[i], nums[i]);
if(maxSum<sum) maxSum=sum;
}
return maxSum;
}
}
C++代码
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int maxSubArray(vector<int>& nums) {
int preSum=0,maxSum=nums[0];
for(int &x:nums){
preSum=max(preSum+x,x);
//cout<<"preSum:"<<preSum<<endl;
maxSum=max(preSum,maxSum);
}
return maxSum;
}
int main(){
vector<int> nums;
nums.emplace_back(-2);
nums.emplace_back(1);
nums.emplace_back(-3);
nums.emplace_back(4);
nums.emplace_back(-1);
nums.emplace_back(2);
nums.emplace_back(1);
nums.emplace_back(-5);
nums.emplace_back(4);
int sum=maxSubArray(nums);
cout<<"sum:"<<sum<<endl;
return 0;
}