53. 最大子序和

代码实现:

    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++) {
            dp[i] = Math.max(dp[i- 1] + nums[i], nums[i]);  
            if (max < dp[i]) {
                max = dp[i];
            }
        }
        return max;
    }
优化:
    public int maxSubArray(int[] nums) {
            int ans = nums[0];
            int sum = 0 ;
            for(int x:nums){
                if(sum>0){
                sum+=x;
                }  
                else {
                sum=x;
                }
                ans = Math.max(ans,sum);
            }
            return ans;
    }
posted @ 2021-11-16 20:00  夜未央111  阅读(35)  评论(0)    收藏  举报