1. 程式人生 > >53、最大子序和

53、最大子序和


輸入: [-2,1,-3,4,-1,2,1,-5,4],

輸出: 6

解釋: 連續子陣列 [4,-1,2,1] 的和最大,為 6

程式碼如下:

class Solution {
    public static int maxSubArray(int[] nums) {
       int maxsum=nums[0];   //定義陣列最大和初始值
       int tempsum=nums[0];   //定義陣列臨時和初始值
       for(int i=1;i<nums.length;i++){
        //當tempsum初始值nums[0]<=0時,應使tempsum=nums[1] 而不是等於0,原因如下面的測試例項
           tempsum=tempsum<=0?nums[i]:nums[i]+tempsum; 
           if(tempsum>maxsum)
                maxsum=tempsum;
        }
        return maxsum;
  }

   public static void main(String[] args){
       int a[]={-1};
       System.out.println(maxSubArray(a));
   }
}