42 最大子陣列差

2021-08-08 14:50:32 字數 1405 閱讀 7564

2017.9.22

與最大子陣列的思路類似,只不多要尋找部分和的最大值和最小值

然後再進行比較。

public class solution 

if(size == 2)

int leftmax = new int[size];

int leftmin = new int[size];

leftmax[0] = nums[0];

leftmin[0] = nums[0];

int rightmax = new int[size];

int rightmin = new int[size];

/**** leftmax[i] 中記錄 第i個元素左邊元素和的最大值,包含第i個元素。

* leftmin[i] 中記錄 第i個元素左邊元素和的最小值,包含第i個元素。

* ***

*/int maxtmp = nums[0];

int mintmp = nums[0];

int sum1tmp = nums[0];

int sum2tmp = nums[0];

for(int i = 1; i < size-1; i++)

else

maxtmp = math.max(maxtmp, sum1tmp);

leftmax[i] = maxtmp;

// 然後再尋找最小值

if(sum2tmp >= 0)

else

mintmp = math.min(mintmp, sum2tmp);

leftmin[i] = mintmp;

} maxtmp = nums[size - 1];

mintmp = nums[size - 1];

sum1tmp = nums[size - 1];

sum2tmp = nums[size - 1];

rightmax[size - 1] = nums[size-1];

rightmin[size - 1] = nums[size-1];

for(int i = size-2; i >0 ; i--)

else

maxtmp = math.max(maxtmp, sum1tmp);

rightmax[i] = maxtmp;

// 然後再尋找最小值

if(sum2tmp > 0)

else

mintmp = math.min(mintmp, sum2tmp);

rightmin[i] = mintmp;

} int max = integer.min_value;

for(int i = 0; i < size-1; i++)

return max;

}}

42 最大子陣列

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

最大子陣列差

給定乙個整數陣列,找出兩個不重疊的子陣列a和b,使兩個子陣列和的差的絕對值 sum a sum b 最大。返回這個最大的差值。樣例給出陣列 1,2,3,1 返回 6 注意子陣列最少包含乙個數 挑戰時間複雜度為o n 空間複雜度為o n class solution return result pri...

最大子陣列差 LintCode

描述 給定乙個整數陣列,找出兩個不重疊的子陣列a和b,使兩個子陣列和的差的絕對值 sum a sum b 最大。返回這個最大的差值。子陣列最少包含乙個數 樣例 給出陣列 1,2,3,1 返回 6 挑戰 時間複雜度為o n 空間複雜度為o n 思路 構建相應的陣列formax i 表示從nums 0 ...