lintcode 42 最大子陣列 II 解析

2021-08-11 16:57:14 字數 1174 閱讀 8550

題目:

給定乙個整數陣列,找出兩個 不重疊 子陣列使得它們的和最大。

每個子陣列的數字在陣列中的位置應該是連續的。

返回最大的和。

樣例給出陣列 [1, 3, -1, 2, -1, 2]

這兩個子陣列分別為 [1, 3] 和 [2, -1, 2] 或者 [1, 3, -1, 2] 和 [2],它們的最大和都是 7

思路:

例:nums陣列

left、light陣列每個元素代表從到當前位置為止,最大子陣列的和

//建立left陣列。含義為從左向右遍歷arr,在從0到當前位置(i)下的最大子陣列的和

int left = new int[arr.length];

//從右向左找

int right = new int[arr.length];

int leftmax = arr[0]; //在left陣列,此位置下最大子陣列的和,並初始化

int maxl = 0; //left中 當前子陣列長度變數

left[0] = leftmax; //設定left[0]

for( int i = 0; i < left.length; i ++)

//right陣列訪問的為,從右向左遍歷,當前位置到最後,最大子陣列的和

int rightmax = arr[arr.length-1];

int maxr = 0;

right[arr.length-1] = rightmax;

for( int i = right.length - 1; i >= 0; i-- )

//求兩個子陣列最大,就是找left從0~i, 和right從i+1到length的最大字陣列的和

int max = left[0] +right[1]; //初始化

//只需遍歷一遍即可

for (int i = 1; i < arr.length - 1; i ++)

return max;

}

LintCode 42 最大子陣列 II

給定乙個整數陣列,找出兩個 不重疊子陣列使得它們的和最大。每個子陣列的數字在陣列中的位置應該是連續的。返回最大的和。public class solution else if tmp max leftarray i max int rightarray new int nums.size max i...

lintcode練習 42 最大子陣列 II

給定乙個整數陣列,找出兩個 不重疊 子陣列使得它們的和最大。每個子陣列的數字在陣列中的位置應該是連續的。返回最大的和。給出陣列 1,3,1,2,1,2 這兩個子陣列分別為 1,3 和 2,1,2 或者 1,3,1,2 和 2 它們的最大和都是7 要求時間複雜度為 o n 子陣列最少包含乙個數 cla...

42 最大子陣列

原題 42.最大子陣列 ii 討論區 給定乙個整數陣列,找出兩個 不重疊 子陣列使得它們的和最大。每個子陣列的數字在陣列中的位置應該是連續的。返回最大的和。注意事項 子陣列最少包含乙個數 您在真實的面試中是否遇到過這個題?yes樣例給出陣列 1,3,1,2,1,2 這兩個子陣列分別為 1,3 和 2...