MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.getMin(); --> Returns -3. minStack.pop(); minStack.top(); --> Returns 0. minStack.getMin(); --> Returns -2.
public class MinStack { Stackstk; int min; /** initialize your data structure here. */ public MinStack() { stk = new Stack (); min = Integer.MAX_VALUE; } public void push(int x) { if(x <= min){ stk.push(min); min = x; } stk.push(x); } public void pop() { if(stk.peek() == min){ stk.pop(); min = stk.pop(); } else { stk.pop(); } } public int top() { return stk.peek(); } public int getMin() { return min; } }
public class MinStack { ArrayDequestack, min; public MinStack() { this.stack = new ArrayDeque (); this.min = new ArrayDeque (); } public void push(int x) { stack.push(x); if(min.isEmpty() || x <= min.peek()){ min.push(x); } } public void pop() { if(stack.isEmpty()){ return; } if(min.peek().equals(stack.peek())){ min.pop(); } stack.pop(); } public int top() { return stack.peek(); } public int getMin() { return min.peek(); } }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/69993.html
Problem Implement a stack with min() function, which will return the smallest number in the stack. It should support push, pop and min operation all in O(1) cost. Example push(1)pop() // return 1pus...
摘要:二實現(xiàn)一個棧,并實現(xiàn)下面方法添加一個新元素到棧頂。移除棧頂?shù)脑?,同時返回被移除的元素。十進(jìn)制轉(zhuǎn)換為二進(jìn)制請輸入正確的數(shù)值方法簡單實現(xiàn)下面這個方法,其實不太好,因為沒有怎么用到這次要練習(xí)的棧方法,哈哈。 最近公司內(nèi)部在開始做前端技術(shù)的技術(shù)分享,每周一個主題的 每周一練,以基礎(chǔ)知識為主,感覺挺棒的,跟著團(tuán)隊的大佬們學(xué)習(xí)和復(fù)習(xí)一些知識,新人也可以多學(xué)習(xí)一些知識,也把團(tuán)隊內(nèi)部學(xué)習(xí)氛圍營造起來...
摘要:題目描述定義棧的數(shù)據(jù)結(jié)構(gòu),請在該類型中實現(xiàn)一個能夠得到棧最小元素的函數(shù)。 題目描述 定義棧的數(shù)據(jù)結(jié)構(gòu),請在該類型中實現(xiàn)一個能夠得到棧最小元素的min函數(shù)。 分析 該題目要求實現(xiàn)一個帶有返回當(dāng)前棧中最小元素功能的數(shù)據(jù)結(jié)構(gòu),首先會想到使用一個變量保存當(dāng)前最小元素的下標(biāo),但是仔細(xì)一想,如果當(dāng)前最小元素剛好在棧頂,此時執(zhí)行pop操作,那么最小元素會被彈出,新的最小元素又上哪兒找呢?比較暴力的方...
摘要:和三個方法的時間復(fù)雜度必須為兩種解法,解法一,將最小值存入自有的數(shù)據(jù)結(jié)構(gòu)中,如下所示原本的值最小值解法二,用兩個棧 堆棧和隊列統(tǒng)稱線性表 簡單的線性結(jié)構(gòu) 數(shù)組和鏈表可以實現(xiàn)這兩種數(shù)據(jù)結(jié)構(gòu) 堆棧 基本理解 DFS 深度優(yōu)先---按深度遍歷 遞歸轉(zhuǎn)非遞歸 隊列 基本理解 BFS 廣度優(yōu)先---按層序遍歷 出入棧的合法性模擬出入棧的過程,不是入棧,就是...
摘要:雙棧法復(fù)雜度時間空間思路暴力的方法是遍歷一遍棧得出最小值,這樣不用任何空間。因為這個最小值的順序也是先進(jìn)后出,我們同樣用一個棧來記錄。這樣主棧在時,如果該值小于等于副棧頂,就也進(jìn)副棧中。當(dāng)主棧時,如果出的元素是副棧棧頂?shù)脑挘睏R惨? Min Stack Design a stack that supports push, pop, top, and retrieving themin...
閱讀 2332·2021-10-11 10:59
閱讀 2612·2021-10-11 10:58
閱讀 3318·2021-09-08 09:35
閱讀 3822·2021-09-02 15:21
閱讀 1471·2019-08-30 15:53
閱讀 2622·2019-08-29 14:16
閱讀 2081·2019-08-26 14:00
閱讀 2965·2019-08-26 13:52