题目详情
Find the contiguous subarray within an array (containing at least one number) which has the largest sum.
For example, given the array [-2,1,-3,4,-1,2,1,-5,4],
the contiguous subarray [4,-1,2,1] has the largest sum = 6.
输入:给定数组
输出:找出给定数组所包含的连续的子数组中,元素加和最大的那一组,返回最大和
解法一
思路:
- 在遍历数组的每一个元素的时候,我们都要思考一个问题——是从这个元素重新开启一个子数组的加和更大,还是和前面的元素一起加和更大。
- 如果单开元素加和更大(判断前面的子数组和是不是小于0)。我们就将保存当前和的nowValue赋值为当前元素。此元素就成为了子数组的第一个元素。
- 或者将当前元素直接加入子数组。每次操作都要判断,当前value是否是最大值,更新max值。
int max = Integer.MIN_VALUE;
int nowValue = 0;
for(int i=0;i<nums.length;i++){
if(nowValue < 0){
nowValue = nums[i];
max = Math.max(max, nowValue);
}else{
nowValue = nowValue + nums[i];
max = Math.max(max, nowValue);
}
}
return max;
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。