剑指offer 20:包含min函数的栈--- Java实现

剑指offer每日一题算法题(java解法)

方便日后复习,从今天开始。

算法之行始于足下

[编程题]包含min函数的栈-- Java实现

------------------------------------------------------------------------------------------------------
题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
前提:
1.熟悉栈的操作原理,进出规则。
2.了解栈的基本方法,push,pop,peek等

解题思路:
1.利用了一个辅助栈进行存值,每次给第一个栈存的时候,都要看看是不是比第二个栈里的值大,不是的话就给第二个栈也push,这样就能保证第二个栈的栈顶绝对是最小值.
2.出栈的时候,只有2个栈顶的值相等第二个栈才会出栈,这样保证了出去之后,下一个栈顶还是最小值

import java.util.Stack;
public class Solution {
    Stack<Integer> stack1=new Stack<Integer>();
    Stack<Integer> stack2=new Stack<Integer>();
    public void push(int node) {
        stack1.push(node);
        if(stack2.empty()){
            stack2.push(node);
        }
        if(stack1.peek()<=stack2.peek()){
                stack2.push(node);
        }
    }
    public void pop() {
        if(stack1.peek()==stack2.peek()){
            stack2.pop();
        }
        stack1.pop();
    }
    public int top() {
        return stack1.peek();
    }
    public int min() {
        return stack2.peek();
    }
}
发布了52 篇原创文章 · 获赞 10 · 访问量 1535

猜你喜欢

转载自blog.csdn.net/jiohfgj/article/details/103122104
今日推荐