155 最小棧下的共享棧的運用

2021-10-25 08:39:47 字數 716 閱讀 4043

一開始想的是用另外乙個變數來遍歷棧內元素,康康誰最小(就是//裡的內容)。但是編譯出錯了,說明棧內的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...