Leetcode53 Maximum Subarray
就是最基本的DP,先用了最基本的做法。
class Solution {
public int maxSubArray(int[] nums) {
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]);
}
int max=nums[0];
for(int i=1;i<dp.length;i++){
max=Math.max(max,dp[i]);
}
return max;
}
}
14ms,19.5%.
稍作改进,不用自带的Math.max。
class Solution {
public int maxSubArray(int[] nums) {
int[] dp = new int[nums.length];
dp[0]=nums[0];
int max=nums[0];
for(int i=1;i<nums.length;i++){
if(dp[i-1]>0) dp[i]=dp[i-1]+nums[i];
else dp[i]=nums[i];
if(dp[i]>max) max=dp[i];
}
return max;
}
}
8ms,99.92%。

浙公网安备 33010602011771号