10.28 - 九章高級算法班題目大總結(jié)(3,4課)

課程3:stack,deque,heap的運(yùn)用
Expression Expand:利用stack來記錄暫不需要的信息

Trapping Rain Water: 找到每個(gè)點(diǎn)的左邊最大和右邊最大

Implement Queue by Two Stacks: stack的簡單應(yīng)用

Min Stack:stack的簡單應(yīng)用

Sliding Window Median:因?yàn)閜ython無法直接刪除heap里的元素,所以用lazy pop來解決

Trapping Rain Water II :用heap從四周朝中間找

Maximal Rectangle:這題是那道最大rectangle的擴(kuò)展,把每一行作為底邊來考慮當(dāng)前行可以形成的最大矩形的大小

Max Tree:stack保持單調(diào)性的應(yīng)用

Largest Rectangle in Histogram:保持單調(diào)遞增,就可以知道以當(dāng)前長度為高的矩形的左右邊界了,stack里存的是index

Data Stream Median:直接用兩個(gè)heap,比較簡單

Sliding Window Maximum:用一個(gè)deque保持window里遞減

Binary Tree Maximum Path Sum II:簡單的dfs

Heapify:對一半的值執(zhí)行一個(gè)siftdown操作,從len/2開始一直操作到0,這樣就可以使得最小值移動(dòng)到最上面,并且保證每個(gè)值的2i和2i+1的節(jié)點(diǎn)都比當(dāng)前值要大

K Edit Distance:比較粗糙的做法是用動(dòng)態(tài)規(guī)劃找出每個(gè)單詞到target的edit distance然后和k比較下

Expression Tree Build:利用stack找出左右節(jié)點(diǎn)

Convert Expression to Reverse Polish Notation:比較麻煩的地方在于確定每一個(gè)運(yùn)算符的base

課程4:按值二分和掃描線

Sqrt(x):比較基礎(chǔ)的按值二分

Maximum Average Subarray:這題的按值二分比較神奇,判定條件有點(diǎn)麻煩

Sqrt(x) II:同樣的按值二分,只是循環(huán)結(jié)束條件是start和end小于某個(gè)微小的數(shù)

Number of Airplanes in the Sky:很簡單的掃描線問題

Divide Two Integers :又一道用二分法思想的題

Find Peak Element:二分法基本題

First Bad Version:又一道基本題

Find Peak Element II:在matrix找到peak,每次可以丟掉左邊或者右邊,或者是上邊和下邊

Wood Cut:比較簡單的按值二分,判定條件是把每一個(gè)都除一下,看看要多少刀

Find the Duplicate Number:二分法,判定條件是數(shù)一數(shù)比它小的值的個(gè)數(shù)

Smallest Rectangle Enclosing Black Pixels:按照給出的pixels向上下左右二分,找到邊界

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容