和為零的最大連續子陣列
我首先想到的是字首陣列和,遍歷一遍陣列,計算出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。第乙個想法肯定就是如果能夠把陣...