1. 程式人生 > 其它 >Java基礎之IO流

Java基礎之IO流

輸入一個整型陣列,陣列中的一個或連續多個整陣列成一個子陣列。求所有子陣列的和的最大值。

要求時間複雜度為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表示的是目前累計的最大的最大數