(演算法)和為0的最大連續子陣列

2021-09-07 02:37:59 字數 861 閱讀 8889

和為零的最大連續子陣列

我首先想到的是字首陣列和,遍歷一遍陣列,計算出sum[i](表示從0-i的子陣列之和)。

有了字首陣列和,只要sum[i]=sum[j](i需要注意的是:當sum[i]等於0時,其區間為[0,i]。

在判斷sum[i]=sum[j](i

#include#include

#include

using

namespace

std;

//o(n^2)

int longestsubarrayofsumzero_1(const vector &arr)

int longest=0

;

int start=0

;

for(int i=1;i<=sz;i++)}}

for(int i=start;i)

cout

<"";

cout

longest;}//

o(n)

int longestsubarrayofsumzero_2(const vector &arr)

}else

pos[sum]=i;

}for(int i=start;i)

cout

<"";

cout

longest;

}int

main()

cout

<< longestsubarrayofsumzero_1(arr)

<< longestsubarrayofsumzero_2(arr) <}

return0;

}

演算法 最大連續子陣列和

題目描述 給定n個整數 可能為負數 組成的序列a 1 a 2 a 3 a n 求該序列如a i a i 1 a j 的子段和的最大值。當所給的整數均為負數時定義子段和為0,依此定義,所求的最優值為 max,1 i j n 例如,當 a 1 a 2 a 3 a 4 a 5 a 6 a 7 1,2,11...

最大連續子陣列和

題目描述 輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值,要求時間複雜度為o n 例如輸入的陣列為 1,2,3,10,4,7,2,5 和最大的子陣列為 3,10,4,7,2 因此輸出為該子陣列的和18。思路 採用貪婪法...

最大連續子陣列和

輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值,要求時間複雜度為o n 例如輸入的陣列為1,2,3,10,4,7,2,5,和最大的子陣列為3,10,4,7,2,因此輸出為該子陣列的和18。第乙個想法肯定就是如果能夠把陣...