面試題21:包含min函數(shù)的棧

題目描述

定義棧的數(shù)據(jù)結(jié)構(gòu),請在該類型中實現(xiàn)一個能夠得到棧最小元素的min函數(shù)。

代碼實現(xiàn)

import java.util.Stack;

public class Solution {

    Stack<Integer> stack = new Stack();
    Stack<Integer> min = new Stack();
    
    public void push(int node) {
        stack.push(node);
        if(min.isEmpty() || node <= min.peek())
            min.push(node);
        else
            min.push(min.peek());
    }
    
    public void pop() {
        stack.pop();
        min.pop();
    }
    
    public int top() {
        return stack.peek();
    }
    
    public int min() {
        return min.peek();
    }
}

主要思路

1、這道題需要用到兩個棧,一個是數(shù)據(jù)棧,一個是輔助棧
2、每次入棧的時候,輔助棧如果是空的,或者本次入棧的數(shù)據(jù)不大于棧頂,直接入棧,比如2,1,1(數(shù)據(jù)棧)和2,1,1(輔助棧);否則壓入的是當(dāng)前棧頂?shù)膹?fù)制值,比如2,3,4(數(shù)據(jù)棧)和2,2,2(輔助棧),從而保證數(shù)據(jù)棧里面的最小值永遠在輔助棧的棧頂
3、需要注意的是,實例化棧的時候,一定要傳入一個泛型參數(shù)(本題中的棧存儲的只能是int類型的值),否則比較大小的時候會出錯(node <= min.peek())
4、訪問棧頂元素用peek方法,而不是top方法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 題目:定義棧的數(shù)據(jù)結(jié)構(gòu),請在該類型中實現(xiàn)一個能夠找得到棧的最小元素的min函數(shù)。在該棧中,調(diào)用min,push以及...
    Felicia1993閱讀 494評論 0 0
  • 問題:定義棧的數(shù)據(jù)結(jié)構(gòu),請在該類型中實現(xiàn)min()接口 解法:除了正常的數(shù)據(jù)棧之外,開辟一個輔助棧。數(shù)據(jù)棧入棧時,...
    qmss閱讀 201評論 0 0
  • Java byte code 的學(xué)習(xí)意義 為啥要學(xué)java bytecode,這就跟你問我已經(jīng)會python了為...
    shanggl閱讀 1,864評論 0 3
  • 總結(jié) 想清楚再編碼 分析方法:舉例子、畫圖 第1節(jié):畫圖分析方法 對于二叉樹、二維數(shù)組、鏈表等問題,都可以采用畫圖...
    M_巴拉巴拉閱讀 1,295評論 0 7
  • 一、棧 1.1 棧的實現(xiàn) 棧(Stack)是限制僅在表的一端進行插入和刪除運算的線性表。java沒有棧這樣的數(shù)據(jù)結(jié)...
    yjaal閱讀 1,519評論 0 1

友情鏈接更多精彩內(nèi)容