包含min函数的栈

包含min函数的栈

题目描述

定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。

可以使用辅助栈保存依次入栈的最小的数,也可以只使用一个栈。但需要保存上一次最小的数。

  • push 时,如小于当前最小值,先把当前最小值压入,再压入当前值,且更新最小值。
  • pop 时,如当前就是最小的,需pop两次,因存了上一个最小值。

实现

private static Stack<Integer> stack = new Stack<Integer>();
private static Integer minElement = Integer.MAX_VALUE;

public void push(int node) {
     if(stack.empty()){
         minElement = node;
         stack.push(node);
     }else{
         if(node<=minElement){
            stack.push(minElement);
            minElement = node;
         }
         stack.push(node);
     }
}

public void pop() {
    if(stack.size() == 0) return;
    if(minElement == stack.peek()){
        if(stack.size() > 1){
           stack.pop();
           minElement = stack.peek();
        }else{
           minElement = Integer.MAX_VALUE;
        }
     }
    stack.pop();
}

public int top() {
    return stack.peek();
}

public int min() {
    return minElement;
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇