最大子陣列差 LintCode

2021-08-21 05:38:24 字數 904 閱讀 9478

描述

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

返回這個最大的差值。

子陣列最少包含乙個數

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

挑戰 時間複雜度為o(n),空間複雜度為o(n)

思路 構建相應的陣列formax[i]表示從nums[0]到nums[i]的子陣列和的最大值,formin[i]表示從nums[0]到nums[i]的子陣列和的最小值,revmax[i]表示從nums[i]到nums[len-1]的子陣列和的最大值,revmin[i]表示從nums[i]到nums[len-1]的子陣列和的最小值。最終的結果取formax[i] - revmin[i + 1]與revmax[j] - formin[j - 1]的最大值

#ifndef c45_h

#define c45_h

#include

#include

#include

using

namespace

std;

class solution

max = nums.back(), min = nums.back();

curmax = max, curmin = min;

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

//計算formax[i] - revmin[i + 1]

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

//計算revmax[i] - formin[i - 1]

for (int i = len - 1; i > 0; --i)

return res;

}};#endif

lintcode 45 最大子陣列差

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

lintcode最大子陣列

最大子陣列 給定乙個整數陣列,找到乙個具有最大和的子陣列,返回其最大和。注意事項 子陣列最少包含乙個數 您在真實的面試中是否遇到過這個題?yes 樣例給出陣列 2,2,3,4,1,2,1,5,3 符合要求的子陣列為 4,1,2,1 其最大和為6 挑戰 要求時間複雜度為o n 標籤 相關題目 分析 這...

最大子陣列差

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