方法:动态规划
练了好久的动态规划,终于会写了
解法一:暴力求解
第一次是这样写的,但是超时了,当个思路看
public static void maxSubArray1(int[] nums){
int max = Integer.MIN_VALUE;
int len = nums.length;
for(int i = 0;i<len;i++){//1
int[] dp = new int[len-i];
dp[0] = nums[i];
for(int j = i+1;j<len;j++){//2
dp[j-i] = dp[j-i-1]+nums[j];
}
max =Math.max(max,Arrays.stream(dp).max().getAsInt()) ;
}
System.out.println(max);
}
方法二:动态规划
看了一下题目的标签是动态规划,然后用了动态规划的思路
public static int maxSubArray(int[] nums){
int max = Integer.MIN_VALUE;
int[] dp = new int[nums.length];
dp[0] = nums[0];
for(int i = 1;i<nums.length;i++){
dp[i] = Math.max(nums[i],nums[i]+dp[i-1]);
max = Math.max(max,dp[i]);
}
max = Arrays.stream(dp).max().getAsInt();
return max;
}