2016.6.1——Min Stack
Min Stack
本题收获:
1.可以利用两个栈操作。
2.栈的基本操作。
题目:
Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.
- push(x) -- Push element x onto stack.
- pop() -- Removes the element on top of the stack.
- top() -- Get the top element.
- getMin() -- Retrieve the minimum element in the stack.
Example:
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); --> Returns -3.
minStack.pop();
minStack.top(); --> Returns 0.
minStack.getMin(); --> Returns -2.
思路:
我的思路:没有思路。
leetcode/dicuss思路:
弄2个stack,一个realStack,存放真正的数据;另外一个是minStack。
对于minStack元素中的每一个元素的意义是:push到 该位置的时候,当前最小元素的值。每次push进新元素的时候,更新minStack的值;每次pop的时候,由于minStack的定义,所以只需把 minStack和realStack一起进行一次pop操作就好了。
minstack只存储最小元素,每次Push时将输入元素与minstack中的元素对比,如果小于minstack则push,否则不操作。pop时,如果minstack的元素等于realstack中元素则pop,否则不操作。
    代码:
 class MinStack {
 private:
     stack<int> s1;
     stack<int> s2;
 public:
     void push(int x) {
         s1.push(x);
         if (s2.empty() || x <= getMin())  s2.push(x);
     }
     void pop() {
         if (s1.top() == getMin())  s2.pop();
         s1.pop();
     }
     int top() {
         return s1.top();
     }
     int getMin() {
         return s2.top();
     }
 };
我的带mian函数的测试代码:
// minStack.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include "iostream"
#include "stack"
using namespace std; class MyClass
{
public:
void push(int val);
void pop();
int minStack();
int top();
private:
stack<int> realstack;
stack<int> minstack;
}; void MyClass::push(int val)
{
realstack.push(val);
if (minstack.empty() || val <= minstack.top()) minstack.push(val);
} void MyClass::pop()
{
if (realstack.top() == minstack.top()) //注意pop的顺序,先比较在pop,不是先pop在比较
{
minstack.pop();
}
realstack.pop();
} int MyClass::top()
{
return realstack.top();
} int MyClass::minStack()
{
return minstack.top();
} int _tmain(int argc, _TCHAR* argv[])
{
MyClass solution;
int val = ;
cout << "the value is : ";
for (int i = ; i < ; i++)
{
cin >> val;
solution.push(val);
}
cout << "the min is : " << solution.minStack() << endl;
for (int i = ; i < ; i++)
{
int value = solution.top();
cout << "pop value is : " << value << endl;
//cin >> val;
solution.pop();
}
cout << "current min is : " << solution.minStack() << endl;
system("pause");
return ;
}
测试结果:
aaarticlea/png;base64,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" alt="" />
参考了:http://www.cnblogs.com/lihaozy/archive/2012/12/09/2809840.html
写的非常详细!
代码2:
 class MinStack {
 public:
     vector<int> a;
     vector<int> min;
     MinStack() {
         min.push_back();
     }
     void push(int x) {
         a.push_back(x);
         if (x < min.back()) {
             min.push_back(x);
         } else {
             min.push_back(min.back());
         }
     }
     void pop() {
         a.pop_back();
         min.pop_back();
     }
     int top() {
         return a.back();
     }
     int getMin() {
         return min.back();
     }
 };
2016.6.1——Min Stack的更多相关文章
- [LintCode] Min Stack 最小栈
		Implement a stack with min() function, which will return the smallest number in the stack. It should ... 
- [CareerCup] 3.2 Min Stack 最小栈
		3.2 How would you design a stack which, in addition to push and pop, also has a function min which r ... 
- leetcode   155. Min Stack  --------- java
		Design a stack that supports push, pop, top, and retrieving the minimum element in constant time. pu ... 
- Min Stack [LeetCode 155]
		1- 问题描述 Design a stack that supports push, pop, top, and retrieving the minimum element in constant ... 
- Min Stack
		Min Stack Design a stack that supports push, pop, top, and retrieving the minimum element in constan ... 
- Java [Leetcode 155]Min Stack
		题目描述: Design a stack that supports push, pop, top, and retrieving the minimum element in constant ti ... 
- 155. Min Stack
		题目: Design a stack that supports push, pop, top, and retrieving the minimum element in constant time ... 
- leetCode Min Stack解决共享
		原标题:https://oj.leetcode.com/problems/min-stack/ Design a stack that supports push, pop, top, and ret ... 
- LeetCode算法题-Min Stack(Java实现)
		这是悦乐书的第177次更新,第179篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第36题(顺位题号是155).设计一个支持push,pop,top和在恒定时间内检索最小 ... 
随机推荐
- 计算机网络【2】—— CSMA/CD协议
			参考文献: https://blog.csdn.net/loveCC_orange/article/details/79177129 一.认识以太网 最早的以太网是将许多计算机都连接到一根总线上. 使 ... 
- Swagger实现API文档功能
			介绍: wagger也称为Open API,Swagger从API文档中手动完成工作,并提供一系列用于生成,可视化和维护API文档的解决方案.简单的说就是一款让你更好的书写API文档的框架. 我们为什 ... 
- MT【114】构造二次函数
			评:b+c,bc好比向量里的一组基底,可以将关于b,c的对称式表示出来. 
- Pku1149 PIGS 卖猪
			题目链接:ヾ(≧∇≦*)ゝ Description Emmy在一个养猪场工作.这个养猪场有M个锁着的猪圈,但Emmy并没有钥匙. 顾客会到养猪场来买猪,一个接着一个.每一位顾客都会有一些猪圈的钥匙,他 ... 
- 一个非典型的Linux路由配置方案
			上周帮人解决了一个问题,这个问题绝对是非典型性的,采用了非常规的方法.虽然最终的方案非常不符合常规,非常不通用,充满了各种藏得很深的技巧或者说是trick,但是这个问题却是一个学习Linux路由的绝好 ... 
- BZOJ 3527 力 | FFT
			BZOJ 3527 力 | 分治 题意 给出数组q,$E_i = \sum_{i < j} \frac{q_i}{(i - j) ^ 2} - \sum_{i > j} \frac{q_i ... 
- Android实现动态改变屏幕方向(Landscape & Portrait)
			1.AndroidManifest.xml: <activity> android:screenOrientation="portrait" ... 2.xx.java ... 
- Kubernetes集群中Service的滚动更新
			Kubernetes集群中Service的滚动更新 二月 9, 2017 0 条评论 在移动互联网时代,消费者的消费行为已经“全天候化”,为此,商家的业务系统也要保持7×24小时不间断地提供服务以满足 ... 
- linux命令总结之date命令
			命令简介: date 根据给定格式显示日期或设置系统日期时间.print or set the system date and time 指令所在路径:/bin/date 命令语法: date [OP ... 
- css基础--简单介绍css
			--引入 什么是css? CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示 HTML 元素 样式通常存储在样式表中 把样式添加到 HTML 4.0 中,是为了解 ... 
