思路一: 贪心法
-
用sum记录从前往后扫过的最大的连续子数组的和;
-
用curSum记录某元素前面紧挨的数组的和;
- 如果curSum小于0;说明该元素前面的子数组的和,都结果有负影响,将curSum更新为nums[i];
4)如果curSum大于0,就把curSum更新为 curSum+nums[i];
- 如果curSum小于0;说明该元素前面的子数组的和,都结果有负影响,将curSum更新为nums[i];
-
判断全局的Sum和curSum大小,更新全局的Sum;
- 时间复杂度 O(n)
class Solution {
public int maxSubArray(int[] nums) {
if (nums.length <= 0) return 0;
int curSum = nums[0];
int resSum = nums[0];
for(int i = 1; i < nums.length; i++){
if(curSum < 0){
curSum = nums[i];
}else{
curSum += nums[i];
}
if(curSum > resSum){