設計包含min函數的棧

題目:設計包含min函數的棧php

原創: 白話算法面試

要求:定義一個棧的數據結構,要求添加一個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 對於輸入的限制爲數字blog

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代碼:

image

image

運行結果:

image

若是你們有更好的算法,歡迎溝通交流 也歡迎你們用其餘語言實現

更多內容,歡迎關注微信訂閱號「玄魂工做室」

點擊打開二維碼

相關文章
相關標籤/搜索