题干: 给你一个整数数组 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;
}
}
本文介绍了如何使用贪心算法解决寻找整数数组中具有最大和的连续子数组问题。通过初始化最大值为数组第一个元素,逐个累加元素并更新最大值,当累加和小于0时重置累加和为0,从而避免负数影响后续求和。最终返回最大值作为最大子数组和。
2754

被折叠的 条评论
为什么被折叠?



