题干: 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
子数组 是数组中的一个连续部分。
题解: 贪心算法。如果sum是负数了,那么后面加再大的值也只会使和变小。假如sum=-3,后面的数是9,加起来等于6,这样还不如直接从9开始加大。
class Solution {
public int maxSubArray(int[] nums) {
int max = nums[0];
int sum=0;
for(int i=0; i<nums.length; i++){
sum += nums[i];
if(sum > max){
max = sum;
}
if(sum < 0){
sum = 0;
}
}
return max;
}
}