美文网首页
面试遇到的问题(二)

面试遇到的问题(二)

作者: ihujian | 来源:发表于2018-07-13 11:07 被阅读0次

定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数。

  • 参考
    牛客网-《剑指offer_编程题》
  • 思路
    应用一个辅助栈。
    压栈:如果A栈的压入比B栈压入大,B栈不压,小于等于时,AB栈同时压入。
    出栈:如果AB栈顶元素不等,A出,B不出。
  • 代码
public class Solution {

    private Stack<Integer> stackData = new Stack<>();
    private Stack<Integer> stackMin = new Stack<>();
    public void push(int node) {
        stackData.push(node);
        if(stackMin.empty()){
            stackMin.push(node);
        }else if(node<= stackMin.peek()){
            stackMin.push(node);
        }
    }
    
    public void pop() {
        if(stackData.isEmpty()){
            throw new RuntimeException("The Stack is Empty!");
        }
        if(stackData.peek() == stackMin.peek()){
            stackMin.pop();
        }
        stackData.pop();
    }
    
    public int top() {
        if(stackData.isEmpty()){
            throw new RuntimeException("The Stack is Empty!");
        }
        int value = stackData.pop();
        if(value == stackMin.peek()){
            stackMin.peek();
        }
        return value;
    }
    
    public int min() {
        if(stackMin.isEmpty()){
            throw new RuntimeException("The Stack is Empty!");
        }
        return stackMin.peek();
    }
}

相关文章

  • 面试遇到的问题(二)

    定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数。 参考牛客网-《剑指offer_编程题...

  • 面试遇到的问题

    201906201.单例模式 https://segmentfault.com/a/119000000435896...

  • 面试遇到的问题

    1.分布式session怎么验证一致 2.什么情况下会产生死锁怎么解决 数据结构 3.线程有哪几种运行状态下可以调...

  • 面试遇到的问题

    2019 web 前端面试总结(内附面经) js事件循环(EventLoop) 浏览器缓存 BFC js基本类型 ...

  • 面试遇到的问题

    1.Sikuli和Selenium有什么区别? üSelenium的准确度更高,而sikuli对图片的要求很高; ...

  • iOS面试中经常遇到的问题二

    1、Runtime消息转发机制? 2、Runloop 让Runloop保活的方式? 3、SDWebImage的缓存...

  • iOS程序员面试,绝对会遇到这些问题!

    iOS程序员面试,绝对会遇到这些问题! iOS程序员面试,绝对会遇到这些问题!

  • 面试遇到的问题(三)

    介绍一下一次网络请求的过程 参考:一次完整的Http请求过程TCP 三次握手HTTP 协议 简单理解: 域名解析 ...

  • 面试遇到的问题(四)

    什么是微服务 参考 微服务概念微服务的优势和不足 概念 微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服...

  • iOS面试遇到的问题

    1.在某个方法中 self.name = _name,name = _name 它 们有区别吗,为什么?前者是存在...

网友评论

      本文标题:面试遇到的问题(二)

      本文链接:https://www.haomeiwen.com/subject/bjcjpftx.html