輸入:陣列arr
輸出:子陣列中最大累加和 (連續的,不是子串行)
連續子陣列,還是子串行?==》子陣列 隱含概念,連續的
關鍵點:連續累加不小於0就加進來,小於零了,前面累加的都不要了,從新從0開始累加
curr記錄累加,只要curr不小於零,一直累加,因為curr>=0對下乙個數字為結尾的都有用,但curr<0了就不是最大的了;
curr每次新增進來乙個數字,
curr<0:curr更新為0,丟棄curr前面累加的,此時max更新為之前max、當前數字的最大值(為什麼,因為可能全負數的陣列)
curr>=0: 更新max(之前的max,curr)【=0的情況,是可以求變種的 累加和最大的最長子陣列】
反證法,證明:陣列中arr[i…j]是最大累加和,上面的方案會不會漏掉
【潛台詞:arr[k:i-1]前面的累加和肯定是小於0的,不小於零,arr[i…j]應當就包含了;arr[j+1:n]也是一樣累加小於0的】
@#**後續再補
演算法 經典題五 題目四 陣列最長遞增子串行
輸入 array整數陣列 eg 3,2,4,5,1,3 輸出 最長遞增子串行 eg 2,4,5 複雜度big o n 2 加乙個ends陣列 定義ends i 下標0開始 找到所有長度為i 1的遞增子串行的最小結尾是啥 eg array 3,2,4,5,1,3 array 3 ends dp i 0...
《演算法經典》 第六章 資料結構
一 stl deque雙端佇列 stack棧的應用 表示式處理 如uva442,多重括號具有的就近原則 a bc 遇到字母時入棧,遇到右括號時出棧並計算,然後結果入棧 二 構造資料結構 鍊錶 可以完成不易用陣列實現的移動 刪除 新增功能 uva11988 題目大意 你在輸入文章的時候,鍵盤上的hom...
劍指offer 第六題 輸出旋轉陣列的最小數字
解題思路 採用二分查詢法。需要考慮三種情況 array mid array r 出現這種情況的array類似 3,4,5,6,0,1,2 此時最小數字一定在mid的右邊。l mid 1 array mid array r 出現這種情況的array類似 1,0,1,1,1 或者 1,1,1,0,1 此...