設計包含min函數的棧
阿新 • • 發佈:2018-08-17
要求 是否為空 微信 什麽 targe 中大 數組 cdn 好的
題目:設計包含min函數的棧
原創: 白話算法
要求:定義一個棧的數據結構,要求添加一個min函數,使他能夠找到棧的最小元素。
要求是:函數min push pop的時間復雜度都是o(1)
寫在前面:為什麽會有寫這樣一個公眾號的想法呢?我的工作的是測試開發,在工作中大多是寫一些工程類的代碼,對算法類的代碼寫的比較少,因為想提高算法的思路,同時又想保持寫代碼的基本能力,所以想到了寫公眾號的辦法,也希望看到文章的同學們,大家可以一起進步~ 本題目是在網上找的goole的一道面試題;一開始的想法是用一個int類型存儲數組中的最小值,但是這樣有pop或者有push操作時,一旦數據變了,就獲取不到棧中的最小值了。
所以代碼思路:用一個單獨的數組存貯數A之前最小值的下標
比如數據是 20, 0, -1, -2, 9, 10,100,-90,
那麽最小值小標為 0,1,2,3,3,3,3,7
代碼中有幾個註意點:
1 對於輸入的限制為數字
2 出棧時判斷棧是否為空
3 存貯最小值下標是,是存這個數之前最小值的下標,寫的時候容易誤寫成,存儲前一個數的下標,建議多用幾組數據進行測試
比如: 0,1,2,3,4; 4,3,2,1 2,3,-1,0,-90,100 20, 0, -1, -2, 9, 10,100,-90
php代碼:
運行結果:
如果大家有更好的算法,歡迎溝通交流 也歡迎大家用其他語言實現
更多內容,歡迎關註微信訂閱號“玄魂工作室”
點擊打開二維碼
設計包含min函數的棧