1. 程式人生 > >Leetcode53 Maximum Subarray

Leetcode53 Maximum Subarray

[] i++ 基本 array class leetcode length sub int

就是最基本的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%。

Leetcode53 Maximum Subarray