leetcode_53 Maximum Subarray

題目詳情

Find the contiguous subarray within an array (containing at least one number) which has the largest sum.
For example, given the array [-2,1,-3,4,-1,2,1,-5,4],
the contiguous subarray [4,-1,2,1] has the largest sum = 6.
輸入:給定數組
輸出:找出給定數組所包含的連續的子數組中,元素加和最大的那一組,返回最大和

解法一

思路:數組

  • 在遍歷數組的每個元素的時候,咱們都要思考一個問題——是從這個元素從新開啓一個子數組的加和更大,仍是和前面的元素一塊兒加和更大。
  • 若是單開元素加和更大(判斷前面的子數組和是否是小於0)。咱們就將保存當前和的nowValue賦值爲當前元素。此元素就成爲了子數組的第一個元素。
  • 或者將當前元素直接加入子數組。每次操做都要判斷,當前value是不是最大值,更新max值。
int max = Integer.MIN_VALUE;
        int nowValue = 0;

        for(int i=0;i<nums.length;i++){
            if(nowValue < 0){
                nowValue = nums[i];
                max = Math.max(max, nowValue);
            }else{
                nowValue = nowValue + nums[i];
                max = Math.max(max, nowValue);
            }
        }
        
        return max;
相關文章
相關標籤/搜索