一開始想的是用另外乙個變數來遍歷棧內元素,康康誰最小(就是//裡的內容)。但是編譯出錯了,說明棧內的top雖然是偽指標,依然不能像陣列一樣遍歷棧內每乙個元素。
之後想用兩個棧,乙個資料棧乙個存當前棧中的最小數,但介面只能接乙個棧。最後兜兜轉,劃零為整用了共享棧,兩個棧放入乙個棧裡。
共享棧:存入第乙個數時,資料與最小棧一起存入。
存入其他數時,先存到資料棧裡,然後存當前資料棧裡面最小的數到最小棧裡。出棧時兩個棧一起出,保證兩個棧內元素數相等。
typedef
struct
minstack;
minstack*
minstackcreate()
void
minstackpush
(minstack* obj,
int x)
else
else}}
void
minstackpop
(minstack* obj)
intminstacktop
(minstack* obj)
intminstackgetmin
(minstack* obj)
return obj->data[obj->topm];}
void
minstackfree
(minstack* obj)
最後,用c刷題也太累了。 leetcode 棧 155 最小棧
設計乙個支援 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。push x 將元素 x 推入棧中。pop 刪除棧頂的元素。top 獲取棧頂元素。getmin 檢索棧中的最小元素。示例 minstack minstack new minstack minstack.push 2 m...
LeetCode 簡單 棧 155 最小棧
設計乙個支援 push pop top 操作,並能在常數時間內檢索到最小元素的棧。push x 將元素 x 推入棧中。pop 刪除棧頂的元素。top 獲取棧頂元素。getmin 檢索棧中的最小元素。示例 輸入 minstack push push push getmin pop top getmin...
155實現最小棧
題意 設計乙個支援 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。push x 將元素 x 推入棧中。pop 刪除棧頂的元素。top 獲取棧頂元素。getmin 檢索棧中的最小元素。方法一 使用輔助棧class minstack def init self self.stack...