最大子陣列和

2022-06-26 10:18:13 字數 740 閱讀 6957

使用動態規劃

f(i):以array[i]為末尾元素的子陣列的和的最大值,子陣列的元素的相對位置不變

f(i)=max(f(i-1)+array[i] , array[i])

res:所有子陣列的和的最大值

res=max(res,f(i))

如陣列[6, -3, -2, 7, -15, 1, 2, 2]

初始狀態:

f(0)=6

res=6

i=1:

f(1)=max(f(0)-3,-3)=max(6-3,3)=3

res=max(f(1),res)=max(3,6)=6

i=2:

f(2)=max(f(1)-2,-2)=max(3-2,-2)=1

res=max(f(2),res)=max(1,6)=6

i=3:

f(3)=max(f(2)+7,7)=max(1+7,7)=8

res=max(f(2),res)=max(8,6)=8

i=4:

f(4)=max(f(3)-15,-15)=max(8-15,-15)=-7

res=max(f(4),res)=max(-7,8)=8

public

int findgreatestsumofsubarray(int

array)

return

res;

}

最大子陣列和

問題描述 給定乙個整數陣列a 0 n 求陣列a的子陣列,使其元素和為最大。問題分析 方法一 可以用普通的方法列舉所有的子陣列,然後求出最大的子陣列和,時間複雜度為o n n 方法二 問題描述符合動態規劃最優子結構的要求。設b i 表示以a i 結尾的子陣列的最大子段和,即 b i max,其中0 j...

最大子陣列和

給定乙個陣列 求出陣列的最大子陣列和 其中包含正,負 和0 很簡單把每個子陣列的和求出來話不多說看 方法1暴力求解法 把所有的子陣列都求解出來o n2 public static intgetmaxsubarr int arr return res 第二種方法 dp求解 很簡單理解加上當前的數arr...

最大子陣列和

leetcode 給你乙個整數陣列 nums 請你找出乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。子陣列 是陣列中的乙個連續部分。示例 1 輸入 nums 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,2,1 的和最大,為 6 示例 2 輸入 nums...