[演算法練習及思路-程式設計師面試金典(Java解法)]No77連續數列

葉落雨飄發表於2020-12-06

題號:no77

題目名:連續數列

原題URL:https://leetcode-cn.com/problems/contiguous-sequence-lcci/

題目描述

給定一個整數陣列,找出總和最大的連續數列,並返回總和。

示例

示例 1:

輸入: [-2,1,-3,4,-1,2,1,-5,4]
輸出: 6
解釋: 連續子陣列 [4,-1,2,1] 的和最大,為 6。

限制

  • 如果你已經實現複雜度為 O(n) 的解法,嘗試使用更為精妙的分治法求解。

思路

1.遍歷陣列,如果當前值加前面的累計值大於當前值,那麼考慮將當前值加到累計值上

2.如果累計值小於當前值,直接用當前值做累計值肯定比較大

3.返回最大值

解題程式碼

class Solution {
    public int maxSubArray(int[] nums) {
        if(nums == null || nums.length ==0) return 0;
        int max = nums[0];
        int sum = nums[0];
        for (int i = 1; i < nums.length; i++) {
            if(sum+nums[i]>nums[i]) {
                sum+=nums[i];
            }else {
                sum = nums[i];
            }
            if(sum>max) {
                max =sum;
            }
        }
        return max;
    }
}

相關文章