Java基礎之IO流
阿新 • • 發佈:2022-01-06
輸入一個整型陣列,陣列中的一個或連續多個整陣列成一個子陣列。求所有子陣列的和的最大值。
要求時間複雜度為O(n)。
示例1: 輸入: nums = [-2,1,-3,4,-1,2,1,-5,4] 輸出: 6 解釋: 連續子陣列 [4,-1,2,1] 的和最大,為 6。
答案:
1 class Solution { 2 public int maxSubArray(int[] nums) { 3 int res = 0; 4 int maxNum = nums[0]; 5 for(int i = 0 ; i < nums.length ; i++){6 res = Math.max(nums[i] , nums[i] + res);//以當前元素為結尾的陣列的最大和,以前一個數結為的最大值,加上當前這個數會不會變大 7 maxNum = Math.max(maxNum , res); 8 } 9 return maxNum; 10 } 11 }
Sumup:
對於樣例給出的執行結果是:
num[i] -2 1 -3 4 -1 2 1 -5 4
res 0 -2 1 -2 4 3 5 6 1 5
maxNum -2 -2 1 1 4 4 5 6 6 6
res表示的是以當前元素為結尾的陣列的最大和
maxNum表示的是目前累計的最大的最大數