給定一個整數數組 nums ,找到一個具有最大和的連續子數組(子數組最少包含一個元素),返回其最大和。
思路:每個循環中,sum表示以nums[i]結尾的最大子序和,res表示目前得到的最大子序和。當循環結束,res就是最終結果。
class Solution {public int maxSubArray(int[] nums) {int sum = 0;int res = nums[0];for(int i = 0;i<nums.length;i++){sum = Math.max(nums[i],sum+nums[i]);//sum表示以nums[i]結尾的最大子序和res = Math.max(res,sum);//res表示目前得到的最大子序和}return res;}
}
1.sum = Math.max(nums[i],sum+nums[i])
當前以i結尾的最大子序和,是在前者基礎上比較得來的,要么nums[i]單獨做為sum,要么加上上一個sum
2.res = Math.max(res,sum)
res比較好理解,就讓他一直成為當前“老大”就行了