給定乙個整數陣列,找出兩個不重疊的子陣列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...