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%。

猜你喜欢

转载自www.cnblogs.com/chason95/p/9951227.html