左程雲算法 - 公開課筆記

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

第五節

題目:原地交換,不允許額外的空間
在這裏插入圖片描述
在這裏插入圖片描述
方法1:複雜度O(N/2)
1、左側逆序
2、右側逆序
3、整體逆序
在這裏插入圖片描述
方法2:循環右移
複雜度O(N^2)

方法3:
直到左右等長的時候,就不再交換了
在這裏插入圖片描述

第六節

在這裏插入圖片描述
在這裏插入圖片描述
方法一:暴力
在這裏插入圖片描述

方法二:一種不是最優解的解法:先對絕對值進行排序,再比較前後數字是否相同

在這裏插入圖片描述
方法三:最優解,雙指針原理
兩頭指針,誰的絕對值大,誰動
首尾指針:劃過的數字,可以保證以後再也不會出現這個結果
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述
如果只關注所有波峯波谷的話,可能會出現波峯波谷失效的狀態。
在這裏插入圖片描述
變換思路:求某一個位置i上方有多少水
在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述

暴力解法O(n^2)
在這裏插入圖片描述
怎麼找左邊和右邊最大值?
生成某前綴數組最大值,作爲預處理結構:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

因爲left輔助結構本身就是從左往右遍歷的,所以在計算水量遍歷時,可以用一個變量維持左側已經遍歷過部分的最大值,就沒有必要另外維護一個left數組了,相當於在線計算left數組
在這裏插入圖片描述
在這裏插入圖片描述
徹底不用輔助結構,用雙指針,時間複雜度仍爲O(n)的解法:
leftmax、rightmax兩個最大值,哪邊最大值小,結算哪一邊的水量。
移動的時候,更新自己一側的最大值
當左側最大值小於右側最大值的時候,結算左側水量,往右移動;

直到最後,兩個指針相遇,停止。
在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
對數器驗證
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章