第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

minStack子類,將一個(gè)對象用于最小堆棧和常規(guī)堆棧

minStack子類,將一個(gè)對象用于最小堆棧和常規(guī)堆棧

慕勒3428872 2021-04-06 17:15:21
我正在閱讀CTCI的書,發(fā)現(xiàn)這個(gè)答案令人困惑。目標(biāo)是創(chuàng)建一個(gè)堆棧數(shù)據(jù)結(jié)構(gòu),該結(jié)構(gòu)可以在O(1)中推送,彈出和最小化(獲取堆棧中的最小元素)。我編寫了一個(gè)具有兩個(gè)堆棧的類,一個(gè)用于保存最小值,一個(gè)用作常規(guī)堆棧。代碼如下。據(jù)我所知,這可以通過測試來完成。   public static class StackWithMin extends Stack<Integer>{      Stack<Integer> stack;      Stack<Integer> minStack;      public StackWithMin(){         stack = new Stack<Integer>();         minStack = new Stack<Integer>();      }      public void push(int value){         if(value <= min()){            minStack.push(value);          }         stack.push(value);      }      public Integer pop(){         int value = stack.pop();         if(value == min()){            minStack.pop();         }         return value;      }      public int min(){         if(minStack.isEmpty()){            return Integer.MAX_VALUE;         }         return minStack.peek();        }   }但是,書中給出的答案對我來說并不完全清楚。我已經(jīng)用Java學(xué)習(xí)了兩門課程,但是用了C語言學(xué)習(xí)了最后兩門,所以我的OOP概念有些生銹。該類中只有一個(gè)堆棧字段,并使用super調(diào)用更新“常規(guī)”堆棧,并使用s2調(diào)用更新最小堆棧。在Java visualizer中查看此內(nèi)容僅顯示一個(gè)堆棧對象,該對象顯然存儲了兩個(gè)不同的堆棧。此實(shí)現(xiàn)有效,但是我不確定為什么。澄清將不勝感激!public class Q2 /* MinStack */ extends Stack<Integer> {    private Stack<Integer> min = new Stack<Integer>();    public void push(int item) {        if (min.isEmpty() || item < min()) {            min.push(item);        }        super.push(item);    }    public Integer pop() {        int item = super.pop();        if (item == min()) {            min.pop();        }        return item;    }    public Integer min() {        return min.peek();    }
查看完整描述

1 回答

  • 1 回答
  • 0 關(guān)注
  • 142 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號