45 最大子陣列差(貪心法,雙指標,隔板)

2021-08-14 23:14:37 字數 849 閱讀 8990

給定乙個整數陣列,找出兩個不重疊的子陣列a和b,使兩個子陣列和的差的絕對值|sum(a) - sum(b)|

最大。返回這個最大的差值。

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

思路:兩個指標,經過前面題的求解,這道題的思路是,分別從左右遍歷陣列,求出其left_max,和right_min,然後相減,但有可能最大值出現在右邊,最小值出現在左邊,如何處理呢,我們還需要再求出left_min,right_max,然後相減,再求出最大值。

注意:要特別注意細節的處理,如,如何保證不重疊

**

class solution 

vectorlmax(n), rmax(n), lmin(n), rmin(n);

for (int i = 0, peek = int_min, sum = 0; i < n; i++)

//記住c++中表示最小值可以用int_min

for (int i = n - 1, peek = int_min, sum = 0; i >0; i--)

//此處i>0,保證rmax[i]與lmin[i]正好不重疊,下同

}for (int i = 0, peek = int_max, sum = 0; i < n; i++)

}for (int i = n - 1, peek = int_max, sum = 0; i >0; i--) //此處i>0

}int result = int_min;

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

return result;

}};

lintcode 45 最大子陣列差

給定乙個整數陣列,找出兩個不重疊的子陣列a和b,使兩個子陣列和的差的絕對值 sum a sum b 最大。返回這個最大的差值。注意事項 子陣列最少包含乙個數 給出陣列 1,2,3,1 返回 6由於是求兩個子陣列的和的差的最大絕對值。因此總體有兩種情況,一種是左邊的子陣列的最大和遠遠大於右邊子陣列的最...

最大子陣列差

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

42 最大子陣列差

2017.9.22 與最大子陣列的思路類似,只不多要尋找部分和的最大值和最小值 然後再進行比較。public class solution if size 2 int leftmax new int size int leftmin new int size leftmax 0 nums 0 lef...