动态规划求解吧,很简单
状态转移方程:
dp[i] = Math.max(dp[i - 1] + nums[i], nums[i]);
代码如下
package com.codeking.lc;
/**
* @author xiongjl
* @since 2023/8/4 10:41
*/
public class lc53 {
public static void main(String[] args) {
int i = new lc53().maxSubArray(new int[]{-2,1,-3,4,-1,2,1,-5,4});
System.out.println(i);
}
// 解法一 :动态规划
public int maxSubArray(int[] nums) {
int[] dp = new int[nums.length];
dp[0] = nums[0];
int max=dp[0];
for (int i = 1; i < nums.length; i++) {
dp[i] = Math.max(dp[i - 1] + nums[i], nums[i]);
max = Math.max(max, dp[i]);
}
return max;
}
}