国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

【面試算法】一個有g(shù)etMin功能的棧

he_xd / 1926人閱讀

摘要:題目實(shí)現(xiàn)一個特殊的棧,在實(shí)現(xiàn)棧的基本功能上再實(shí)現(xiàn)一個實(shí)現(xiàn)返回棧中最小元素的操作。要求,操作的時間復(fù)雜度都是,設(shè)計的棧類型額可以使用現(xiàn)成的棧結(jié)構(gòu)。第一種代碼實(shí)現(xiàn)第二種代碼實(shí)現(xiàn)

【題目】實(shí)現(xiàn)一個特殊的棧,在實(shí)現(xiàn)棧的基本功能上再實(shí)現(xiàn)一個實(shí)現(xiàn)返回棧中最小元素的操作。
【要求】
1,pop、push、getMin操作的時間復(fù)雜度都是O(1);
2,設(shè)計的棧類型額可以使用現(xiàn)成的棧結(jié)構(gòu)。

第一種代碼實(shí)現(xiàn):

public class GetMinStack_1 {

    private Stack stackData;
    private Stack stackMin;

    public GetMinStack_1(){
        stackData = new Stack();
        stackMin = new Stack();
    }

    public void push(int newNum){
        if (stackMin.isEmpty()) {
            stackMin.push(newNum);
        }else if (newNum <= getMin()) {
            stackMin.push(newNum);
        }
        stackData.push(newNum);
    }

    public int pop(){
        if (stackData.isEmpty()) {
            System.out.println("stack is empty");
            return -1;
        }
        int value = stackData.pop();
        if (value == getMin()) {
            stackMin.pop();
        }
        return value;
    }

    private int getMin() {
        // TODO Auto-generated method stub
        if (stackMin.isEmpty()) {
            System.out.println("stack is empty");
            return -1;
        }
        return stackMin.peek();
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        GetMinStack_1 stack = new GetMinStack_1();
        int[] testNum = {4,2,4,6,5,0,1,10};
        for(int i:testNum){
            stack.push(i);
        }
        for(int i = 0; i < testNum.length; i++){
            System.out.println(stack.getMin()+" "+stack.pop());
        }
    }

}

第二種代碼實(shí)現(xiàn) :

public class GetMinStack_2 {

    private Stack stackData;
    private Stack stackMin;

    public GetMinStack_2(){
        stackData = new Stack();
        stackMin = new Stack();
    }

    public void push(int newNum){
        if (stackMin.isEmpty()) {
            stackMin.push(newNum);
        }
        else if (newNum <= getMin()) {
            stackMin.push(newNum);
        }else {
            stackMin.push(getMin());
        }
        stackData.push(newNum);
    }

    public int pop(){
        if (stackData.isEmpty()) {
            System.out.println("stack is empty");
            return -1;
        }
        int value = stackData.pop();
        stackMin.pop();
        return value;
    }

    private int getMin() {
        // TODO Auto-generated method stub
        if (stackMin.isEmpty()) {
            System.out.println("stack is empty");
            return -1;
        }
        return stackMin.peek();
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        GetMinStack_2 stack = new GetMinStack_2();
        int[] testNum = {4,2,4,6,5,0,1,10};
        for(int i:testNum){
            stack.push(i);
        }
        for(int i = 0; i < testNum.length; i++){
            System.out.println(stack.getMin()+" "+stack.pop());
        }
    }
}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/65579.html

相關(guān)文章

  • 【刷算法】LeetCode.155-最小棧

    摘要:題目描述設(shè)計一個支持,,操作,并能在常數(shù)時間內(nèi)檢索到最小元素的棧。刪除棧頂?shù)脑亍z索棧中的最小元素。示例返回返回返回代碼實(shí)現(xiàn) 題目描述 設(shè)計一個支持 push,pop,top 操作,并能在常數(shù)時間內(nèi)檢索到最小元素的棧。 push(x) -- 將元素 x 推入棧中。 pop() -- 刪除棧頂?shù)脑亍?top() -- 獲取棧頂元素。 getMin() -- 檢索棧中的最小元素。 示例...

    wing324 評論0 收藏0
  • LeetCode 155:最小棧 Min Stack

    摘要:刪除棧頂?shù)脑亍?梢粤硗庑陆ㄒ粋€棧來順序存入數(shù)據(jù)最小值。另外在數(shù)據(jù)入棧時需要判斷該值是否比輔助棧的棧頂元素的值更小,如果更小,也應(yīng)該將它加入輔助棧。并且需要判斷輔助棧是否為空,在不空的條件下才可以取棧頂元素比較,否則會溢出。 LeetCode 155:最小棧 Min Stack 設(shè)計一個支持 push,pop,top 操作,并能在常數(shù)時間內(nèi)檢索到最小元素的棧。 push(x) -- ...

    LeexMuller 評論0 收藏0
  • 【Java】幾道常見的秋招面試

    摘要:總結(jié)的時間復(fù)雜度是,是空間是使用輔助棧來存儲最小值。項(xiàng)目就是為了解決配置繁瑣的問題,最大化的實(shí)現(xiàn)約定大于配置。 前言 只有光頭才能變強(qiáng) Redis目前還在看,今天來分享一下我在秋招看過(遇到)的一些面試題(相對比較常見的) 0、final關(guān)鍵字 簡要說一下final關(guān)鍵字,final可以用來修飾什么? 這題我是在真實(shí)的面試中遇到的,當(dāng)時答得不太好,現(xiàn)在來整理一下吧。 final可以修飾...

    Rocko 評論0 收藏0
  • 力扣(LeetCode)155

    摘要:題目地址題目描述設(shè)計一個支持,,操作,并能在常數(shù)時間內(nèi)檢索到最小元素的棧。將元素推入棧中。刪除棧頂?shù)脑亍J纠祷胤祷胤祷亟獯鹈看稳霔6挤湃雰蓚€元素,分別是當(dāng)前元素,和當(dāng)前的最小元素因此放入之前需要和當(dāng)前值進(jìn)行比較。 題目地址:https://leetcode-cn.com/probl...題目描述:設(shè)計一個支持 push,pop,top 操作,并能在常數(shù)時間內(nèi)檢索到最小元素的棧。 p...

    Scliang 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<