博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IT公司100题-2-设计带min函数的stack
阅读量:5880 次
发布时间:2019-06-19

本文共 1751 字,大约阅读时间需要 5 分钟。

hot3.png

问题描述:

定义栈的数据结构,要求添加一个min 函数,能够得到栈的最小元素。

要求函数min、push 以及pop 的时间复杂度都是O(1)。

 

双倍空间实现:

保存2个栈,分别是元素和当前最小值。

 

压缩空间实现:

代码实现:

package oschina.IT100;/** * @project: oschina * @filename: IT2.java * @version: 0.10 * @author: JM Han * @date: 17:08 2015/10/20 * @comment: design a stack that has min function which could return the min element at anytime * @result: */import java.util.Stack;class MinStack{   Stack
 stacks, mins;   MinStack(){      stacks = new Stack
();      mins   = new Stack
();   }   void push(Integer x){      stacks.push(x);      //use <= instead of < for duplicate element      if(mins.isEmpty() || x <= mins.peek())         mins.push(x);   }   void pop(){      Integer x = stacks.pop();      if(x == mins.peek())         mins.pop();   }   Integer peek(){      return stacks.peek();   }   Integer getMin(){      return mins.peek();   }}public class IT2 {   public static void main(String[] args) {      MinStack minStack = new MinStack();      minStack.push(6);      minStack.push(2);      minStack.push(3);      minStack.push(1);      minStack.push(1);      minStack.push(5);      minStack.push(8);      System.out.println("Content of stack: \n" + minStack.stacks);      System.out.println("min value of stack: \n" + minStack.getMin());      System.out.println("Content of mins: \n" + minStack.mins);      minStack.pop();      minStack.pop();      minStack.pop();      System.out.println("Content of mins: \n" + minStack.mins);      System.out.println("min value of stack: \n" + minStack.getMin());   }}

 输出:

Content of stack: [6, 2, 3, 1, 1, 5, 8]min value of stack: 1Content of mins: [6, 2, 1, 1]Content of mins: [6, 2, 1]min value of stack: 1

转载于:https://my.oschina.net/jimmyhan/blog/519467

你可能感兴趣的文章
webSocket vnc rfb
查看>>
列表推导式 生成器表达式
查看>>
控制子窗口的高度
查看>>
Linux 防火墙iptables命令详解
查看>>
打造笔记本电脑基地重庆要当全球“老大”
查看>>
处理 Oracle SQL in 超过1000 的解决方案
查看>>
《JAVA与模式》之简单工厂模式
查看>>
Alpha线性混合实现半透明效果
查看>>
chkconfig 系统服务管理
查看>>
一个简单的运算表达式解释器例子
查看>>
ORACLE---Unit04: SQL(高级查询)
查看>>
Entity Framework Code First 模式-建立多对多联系
查看>>
[LeetCode] Reverse Lists
查看>>
前台页面之<base>标签
查看>>
angular分页插件tm.pagination 解决触发二次请求的问题
查看>>
day08-文件操作
查看>>
教学-45 对象的相等
查看>>
贪食蛇
查看>>
关于Spring 中的事务
查看>>
为什么现在都用面向对象开发,为什么现在都用分层开发结构?
查看>>