/*
解法一:使用链表从0实现栈,用min来存放最小值。
复杂的地方是,如果pop了最小的数,就要遍重新找到最小的数。
*/
public class MinStack {
List<Integer> list;
int min;
/** initialize your data structure here. */
public MinStack() {
list=new LinkedList<>();
min=Integer.MAX_VALUE;
} public void push(int x) {
if (x<min)
min=x;
list.add(x);
} public void pop() {
if (min==list.get(list.size()-1)){
min=Integer.MAX_VALUE;
for (int i=0;i<list.size()-1;i++){
if (list.get(i)<min)
min=list.get(i);
}
}
if (list.size()!=0)
list.remove(list.size()-1); } public int top() {
return list.get(list.size()-1);
} public int getMin() {
return min;
}
/*
解法二:使用Java的栈,并用一个辅助栈来存最小值。
*/
public class MinStack2{
Stack<Integer> stack;
Stack<Integer> helper;
/** initialize your data structure here. */
public MinStack2() {
stack=new Stack<>();
helper=new Stack<>();
} public void push(int x) {
stack.push(x);
if (helper.isEmpty()||x<=helper.peek())
helper.push(x);
} public void pop() {
if (!stack.isEmpty()){
int i=stack.pop();
if (i==helper.peek())
helper.pop();
}
} public int top() {
if (!stack.isEmpty())
return stack.peek();
throw new RuntimeException("stack is empty");
} public int getMin() {
if (!helper.isEmpty())
return helper.peek();
throw new RuntimeException("stack is empty");
}
} }

155--MinStack的更多相关文章

  1. [LeetCode] 155. minStack 设计最小栈

    注意:getMin()时间复杂度为O(1) 最原始的方法: class MinStack(object): def __init__(self): """ initial ...

  2. LeetCode No.154,155,156

    No.154 FindMin 寻找旋转排序数组中的最小值 II 题目 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7 ...

  3. leetcode算法学习----155. 最小栈(MinStack )

    下面题目是LeetCode算法155题: https://leetcode.com/problems/min-stack/ 题目1:最小函数min()栈 设计一个支持 push,pop,top 操作, ...

  4. leetcode 155. Min Stack 、232. Implement Queue using Stacks 、225. Implement Stack using Queues

    155. Min Stack class MinStack { public: /** initialize your data structure here. */ MinStack() { } v ...

  5. LeetCode 155:最小栈 Min Stack

    LeetCode 155:最小栈 Min Stack 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈. push(x) -- 将元素 x 推入栈中. pop() -- ...

  6. 11/9 <Stack> 155 232 225

    155. Min Stack class MinStack { int min = Integer.MAX_VALUE; Stack<Integer> stack = new Stack& ...

  7. [LeetCode] 155. Min Stack 最小栈

    Design a stack that supports push, pop, top, and retrieving the minimum element in constant time. pu ...

  8. Java实现 LeetCode 155 最小栈

    155. 最小栈 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈. push(x) – 将元素 x 推入栈中. pop() – 删除栈顶的元素. top() – 获取 ...

  9. 【LeetCode】155. 最小栈

    155. 最小栈 知识点:栈:单调 题目描述 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈. push(x) -- 将元素 x 推入栈中. pop() -- 删 ...

  10. 李洪强iOS经典面试题155 - const,static,extern详解(面试必备)

    李洪强iOS经典面试题155 - const,static,extern详解(面试必备) 一.const与宏的区别(面试题): const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽 ...

随机推荐

  1. 最短时间(几秒内)利用C#往SQLserver数据库一次性插入10万条数据

    用途说明: 公司要求做一个数据导入程序,要求将Excel数据,大批量的导入到数据库中,尽量少的访问数据库,高性能的对数据库进行存储.于是在网上进行查找,发现了一个比较好的解决方案,就是采用SqlBul ...

  2. 面向对象程序设计(Java) 第7周学习指导及要求

    2019面向对象程序设计(Java)第7周学习指导及要求 (2019.10.11-2019.10.14) 学习目标 掌握四种访问权限修饰符的使用特点: 掌握Object类的用途及常用API: 掌握Ar ...

  3. ORM对象关系映射:

    django配置orm: django使用mysql数据库: 首先cmd创建库 settings配置mysql数据库: DATABASES = { 'default': { 'ENGINE': 'dj ...

  4. vue2.x 监听数据变化 ---- watch

    computed: { //需要监听的数据 loginToken () { return this.$store.state.userinfo.status; } }, watch: { loginT ...

  5. vue 使用JavaScript表达式

    vue使用JavaScript的运算方式 代码如下: <!doctype html> <html lang="en"> <head> <m ...

  6. vue_day05

    目录 vue前后端交互: vue 分离前后端交互: vue前端发送请求: vue请求插件--axios: main.js配置: 前端朝后端请求传参方式: django后端返回数据样式: vue配置El ...

  7. 宝塔面板+djiango+mod wsgi +apache 配置多项目站点

    在一台服务器上同时有多个djiango项目,那么就需要配置多站点,利用不同的域名不同的端口  同时存在多个项目. 环境,centos + 宝塔面板+apache+django 1.在centos环境下 ...

  8. 关于书籍《区块链以太坊DApp开发实战》的内容告示

    书中所列举的以太坊 etherscan 浏览器,原链接已经不能使用国内网络正常访问了,需要翻墙,下面的链接不需要翻墙,也是 etherscan 的官方浏览器链接: 以太坊浏览器:https://cn. ...

  9. 物联网架构成长之路(46)-Rancher部署应用入门

    0.前言 上一篇已经安装好Rancher了,这一篇主要是简单的操作一下Rancher,了解一些常用功能.1.集群信息 选择对应的集群,查看对应集群信息. 还可以执行kubectl命令,命令可以参考前几 ...

  10. 【shell命令】$#、$*、$n分别表示的含义

    $#.$*.$n分别表示的含义 1.[$0] 表示当前脚本的文件名: 2.[$n] 表示传递给脚本的第n个参数值(n为1~9): 3.[$*] 表示传递给脚本的所有参数(不包括脚本名称的参数): 4. ...