题目描述:
给定一个整数数组,查找连续的最大和的子数组(至少包含一个数字)并返回其和。
题目举例:
给定输入:[-2,1,-9,4,-1,2,1,-8,4]
输出: 6
题目分析:
因为是求最大连续的和,所以只需要遍历一次就行。
每遍历到一个数,计算下当前连续和的最大值。
例如:
i=0, 当前连续最大值为: -2
i=1, a[1] 大呢?还是a[0]+a[1]大?取大者
若a[1] 大,取从i=1开始计算子串
若a[0]+a[1] 大, 继续计算连续最大子串。
只需O(n) 遍历即可。
代码:
class Solution {
public int maxSubArray(int[] nums) {
int maxcurr = nums[0];
int max = nums[0];
for (int i=1;i<nums.length;i++){
maxcurr = Math.max(nums[i], maxcurr+nums[i]);
max = Math.max(max, maxcurr);
}
return max;
}
}
点击查看更多内容
1人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦