实现一个特殊的栈, 在实现栈的基本功能的基础上, 再实现返 回栈中最小元素的操作。

题目
实现一个特殊的栈, 在实现栈的基本功能的基础上, 再实现返
回栈中最小元素的操作。
【要求】:
1.pop、 push、 getMin操作的时间复杂度都是O(1)
2.设计的栈类型可以使用现成的栈结构

解答:用两个栈,一个数据栈,一个记录最小值栈

public static class MyStack1 {
        private Stack<Integer> stackData;
        private Stack<Integer> stackMin;

        public MyStack1() {
            this.stackData = new Stack<Integer>();
            this.stackMin = new Stack<Integer>();
        }

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

        public int pop() {
            if (this.stackData.isEmpty()) {
                throw new RuntimeException("Your stack is empty.");
            }
            int value = this.stackData.pop();
            if (value == this.getmin()) {
                this.stackMin.pop();
            }
            return value;
        }

        public int getmin() {
            if (this.stackMin.isEmpty()) {
                throw new RuntimeException("Your stack is empty.");
            }
            return this.stackMin.peek();
        }
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 《程序员代码面试指南-左程云》笔记 第一章 栈和队列 设计一个有getMin功能的栈 实现一个特殊的栈,在实现栈的...
    xiaogmail阅读 18,606评论 2 19
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,955评论 18 399
  • 手术结束了,据说切的很干净。这几天等伤口长好,再过三周就开始化疗了。既然事情已经发生,只有硬撑着坚持下去。未来谁也...
    千阳0569阅读 767评论 0 0
  • 怀一颗朴素的心 花开了,我不去看 花落了,我去看彩虹 关联着风雨和美 踏着落花,行走 走的过程就是归途 真的不是刻...
    子墨的简书阅读 2,817评论 4 7
  • 相信很多人,能发微信绝对不打电话,能发文字绝对不发语音。微信是我们使用频率很高的APP,公事私事都会用。不知你有没...
    Angelina_Danae阅读 5,741评论 0 2