1.最大子序和
給定乙個整數陣列 nums ,找到乙個具有最大和的連續子陣列(子陣列最少包含乙個元素),返回其最大和。
示例:輸入: [-2,1,-3,4,-1,2,1,-5,4],
輸出: 6
解釋: 連續子陣列 [4,-1,2,1] 的和最大,為 6。
class solution
else
ans = ans>sum?ans:sum;
}return ans;}};
2.環形子陣列最大和問題
給定乙個由整數陣列 a 表示的環形陣列 c,求 c 的非空子陣列的最大可能和。
在此處,環形陣列意味著陣列的末端將會與開頭相連呈環狀。(形式上,當0 <= i < a.length 時 c[i] = a[i],而當 i >= 0 時 c[i+a.length] = c[i])
此外,子陣列最多只能包含固定緩衝區 a 中的每個元素一次。(形式上,對於子陣列 c[i], c[i+1], ..., c[j],不存在 i <= k1, k2 <= j 其中 k1 % a.length = k2 % a.length)
示例 1:
輸入:[1,-2,3,-2]
輸出:3
解釋:從子陣列 [3] 得到最大和 3
示例 2:
輸入:[5,-3,5]
輸出:10
解釋:從子陣列 [5,5] 得到最大和 5 + 5 = 10
示例 3:
輸入:[3,-1,2,-1]
輸出:4
解釋:從子陣列 [2,-1,3] 得到最大和 2 + (-1) + 3 = 4
示例 4:
輸入:[3,-2,2,-3]
輸出:3
解釋:從子陣列 [3] 和 [3,-2,2] 都可以得到最大和 3
class solution
//2.跨越邊界的最小值 陣列求和再減去無環的子陣列的最小和
//求乙個最小值子陣列 總和減去最小連續子陣列,即為環形子陣列
int s = accumulate(a.begin(),a.end(),0);
int ans = int_max;
int min_value=a[0];
for(int i=1;i優化:
//只是**量優化了
class solution
if(res<0) return res;
return max(s-ans,res);
}};//賊神奇 if else居然比三元運算子快?
連續子陣列最大和問題
輸入乙個整形陣列,求陣列中連續的子陣列使其和最大。比如,陣列x 應該返回 x 2.6 的和187.我們很自然地能想到窮舉的辦法,窮舉所有的子陣列的之和,找出最大值。i,j的for迴圈表示x i.j k的for迴圈用來計算x i.j 之和。maxsofar 0 for i 0,n forj i,n s...
子陣列的最大和問題
輸入乙個整形陣列,求所有子陣列的和的最大值。要求時間複雜度為o n 例如輸入的陣列為1,2,3,10,4,7,2,5,和最大的子陣列為3,10,4,7,2,因此輸出為該子陣列的和18。注 如果當前狀態的累加和小於0,則放棄該狀態,將其歸零。依次遍歷陣列中的每個元素,把他們相加,如果累加和小於0,則 ...
子陣列最大和
看到的乙個面試題。有很多人已經寫過,在此記下,明天給出拓展。題目 輸入乙個整型陣列,陣列裡有正數也有負數,陣列中連續的乙個或多個整數組成為子陣列,求有最大和的子陣列。要求 時間複雜度o n 如下 include using namespace std int main void int size s...