演算法 經典題六 題目六 陣列中子陣列最大累加和

2021-10-18 10:32:51 字數 538 閱讀 9128

輸入:陣列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 此...