1 题目描述
2 算法思路
动态规划:
- 状态定义:dp[i] 代表以第 i 个元素结果的数组的最大和
- 转移方程:dp[i] = Max( dp[i - 1] + nums[i] , nums[i])
- 初始状态:dp[0] = nums[0]
- 返回值:返回dp列表中的最大值
3 代码
class Solution {
public int maxSubArray(int[] nums) {
int res = nums[0];
for(int i = 1; i < nums.length; i++){
nums[i] = nums[i] + Math.max(0, nums[i - 1]);
res = Math.max(nums[i], res);
}
return res;
}
}
4 提交结果