lintcode 43 最大子陣列 III

2021-08-16 15:45:26 字數 890 閱讀 7032

給定乙個整數陣列和乙個整數 k,找出 k 個不重疊子陣列使得它們的和最大。每個子陣列的數字在陣列中的位置應該是連續的。

返回最大的和。

注意事項

子陣列最少包含乙個數

給出陣列 [-1,4,-2,3,-2,3] 以及 k =2,返回 8
分析:與best time to buy and sell stock iv類似,兩個陣列分別記錄包含當前值的本地最優解和全域性最優解。local[i][j]代表從0到nums中第i個數字處,分成j個陣列後,和的最大值,且必須包括第i個數字,這樣可以排除第i個陣列包含在前乙個陣列中的情況。global[i][j]代表從0到nums第i個數字處,分成j個陣列後和的最大值。

二維陣列動態規劃的狀態轉移方程為:

local[i][j] = math.max(local[i - 1][j], global[i - 1][j - 1]) + nums[i - 1];

global[i][j] = math.max(global[i - 1][j], local[i][j]);

public

class

solution

int local=new

int[nums.length+1][k+1];

int global=new

int[nums.length+1][k+1];

for(int i=1;i<=nums.length;i++)

local[i][j]=math.max(local[i-1][j],global[i-1][j-1])+nums[i-1];

if(i==j)else}}

return global[nums.length][k];

}}

lintcode最大子陣列

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

LINTCODE 最大子陣列III

lintcode 最大子陣列iii 思路 動態規劃的方法,記mustthelast i j 為在前i個數中分成j段,且第j段必須有第i個數的最大值,notthelast i j 為前i個中分成j段,且第j段不一定含有第i個數的最大值 注意初始化的資料,不能全部初始化為0,不然在全部為負整數以及一些其...

最大子陣列差 LintCode

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