題目:
給定乙個整數陣列,找出兩個 不重疊 子陣列使得它們的和最大。
每個子陣列的數字在陣列中的位置應該是連續的。
返回最大的和。
樣例給出陣列 [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...