连续子数组的最大和
面试题42. 连续子数组的最大和
解题思路:
通过“子数组”、“最大和”等关键字,应该联想到动态规划,来看一下这道题是否有最优子结构:
定义一个max数组,max[i]用来记录以nums[i]结尾的连续子数组的最大和。来看一下,是否可以通过max[i-1]推出max[i]:
假设:max[i-1]=k,
当k<0时,nums[i]+k<nums[i],max[i]=nums[i];
当k>0时,nums[i]+k>nums[i],max[i]=nums[i]+k。
大功告成!
java代码:
public int maxSubArray(int[] nums) {
int max=nums[0];
//这里直接在nums数组中进行修改,不用额外空间
for(int i=1;i<nums.length;i++)
{
if(nums[i-1