题目
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
子数组 是数组中的一个连续部分。
题解
经典的动态规划题目,dp数组的含义是:以当前元素作为结尾的子数组之和的值,按照递推公式:dp[i]=max(dp[i-1]+nums[i],nums[i])
class Solution {
public int maxSubArray(int[] nums) {
if(nums.length==1)return nums[0];
int [] dp=new int [nums.length];
dp[0]=nums[0];
int max=nums[0];
for(int i=1;i<nums.length;i++){
dp[i]=Math.max(nums[i],dp[i-1]+nums[i]);
max=Math.max(dp[i],max);
}
return max;
}
}