題目描述:給定乙個二進位制陣列,找到含有相同數量的0和1的最長連續子陣列
(1)方法一,暴力破解法,獲取字串的子串,n^2個,然後判斷每個串是否符合0,1個數相同,這樣做的時間複雜度為o(n^3)
稍微優化,如果乙個長度為n的子串滿足條件,那麼這n個元素的和加起來一定=(n/2);這樣的話,迴圈增量加就可以了,不用每個子串從頭計算,複雜度降為o(n^2)
(2)將所有的數字0替換為-1,定義乙個變數sum=0;然後讓這個變數與陣列中的每個元素逐個相加,用map記錄每次相加的結果記錄及其下標,如果在後面得到某個結果是在map中已經存在的值,那麼證明sum在a~b這個範圍內相加的結果為0,也就是這個範圍中0與1的數量相同,然後通過下標相減得到這個範圍長度。接下來我們不斷更新這種範圍長度的最大值便可。
int findmaxlength(vector& nums)
else //新增沒有過的數字
mp[sum] = i;
}return res;
}
求最大連續子陣列之和
給定k個整數的序列,其任意連續子串行可表示為,其中 1 i j k。最大連續子串行是所有連續子串行中元素和最大的乙個,例如給定序列,其最大連續子串行為,最大和 為20。6 211 4 13 5 2 10 1012 34 5 23 37 21 65 8 3 2 5 0110 3 1 5 23 1 0 ...
最大連續子陣列
對於乙個給定的陣列a,求 a中連續子陣列,使得該陣列的和最大 例如 a 1,2,3,10,4,7,2,5 結果 3 10 4 7 2 暴力法 遍歷求a的所有子陣列,求和最大的 分治法 陣列的和最大那個陣列只會出現在以下三種情況中 a.存在於陣列下標從0到mid中,其中mid為陣列長度 length ...
最大連續子陣列
問題描述,給定乙個陣列a 0,1,n 1 求出a的連續陣列,使得該子陣列的和最大。例如 陣列a 1,2,3,10,4,7,2 則最大的子陣列為 3,10,4,7,2 解法 1.暴力法 2.分治法 3.動態規劃法 一 暴力發 分析 直接求解a i,j 的值,0 i n i j n,i,i 1,j 1的...