题目描述

定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数
解法一:
思路:采用java中自带的迭代函数进行处理。
public class Solution{
/**
* @param args
*/
Stack<Integer> stack = new Stack<Integer>();
public void push(int node) {
stack.push(node);
} public void pop() {
stack.pop();
} public int top() {
return stack.peek();//这里的top值是用.peek()函数,不要忘记了栈本身的内部函数
} public int min() {
int min = stack.peek();//第一个数出栈
int tmp = 0;
Iterator<Integer> iterator = stack.iterator();//迭代,以此出栈
while (iterator.hasNext()){
tmp = iterator.next();
if (min>tmp){
min = tmp;
}
}
return min;
} public static void main(String[] args)throws Exception {
// TODO Auto-generated method stub
min_stack ms=new min_stack();
ms.push(3);
ms.push(2);
ms.push(3);
System.out.println(ms.min());
}
}

解法二:

思路:用一个栈data保存数据,用另一个栈min保存以此入栈的最小数。如:data中以次入栈:5,4,3,8,9,10,111,12,1

则min中以次入栈:5,4,3,1

每次入栈的时候,如果入栈的元素比min中的栈顶元素小或等于则入栈,否则不如栈。

public class Solution{
Stack<Integer> data = new Stack<Integer>();
Stack<Integer> min = new Stack<Integer>();
Integer temp=null;
public void push(int node){
if(temp!=null){
if(node < temp){
min.push(node);
temp = node;//temp保存的是最小值
}
data.push(node);
}else{
temp = node;
data.push(node);
min.push(node);
} }
public int pop(){
int num = data.pop();
int num2 = min.pop();
if(num != num2){//判断栈min中是否已经存在了
min.push(num2);
}
}
public int top(){
int num = data.pop();
data.push(num);
return num;
}
public int min(){
int num = min.pop();
min.push(num);
return num;
}
}

解法三:

/*
* 1.dataStack为存储数据的栈,minStack为存储最小值的栈;
* 2.push的时候将value值与minStack中的top值比较,小则minStack push value,大则push top值
*/
class Solution {
public:
stack<int> dataStack, minStack;
void push(int value) {
dataStack.push(value);
if (minStack.empty()) {
minStack.push(value);
}
else{
int min = minStack.peek();

        if(value<min){
          minStack.push(value);
        }else{
          minStack.push(min);
        }

}

    }
void pop() {
dataStack.pop();
minStack.pop();
}
int top() {
return dataStack.peek();
}
int min() {
return minStack.peek();
}
};

包含min函数的栈的更多相关文章

  1. 剑指Offer面试题:19.包含Min函数的栈

    一.题目:包含Min函数的栈 题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数.在该栈中,调用min.push及pop的时间复杂度都是O(1). 这里我们要实现的就是min ...

  2. 【编程题目】设计包含 min 函数的栈

    2.设计包含 min 函数的栈(栈)定义栈的数据结构,要求添加一个 min 函数,能够得到栈的最小元素.要求函数 min.push 以及 pop 的时间复杂度都是 O(1). 我的思路: 用一个额外的 ...

  3. 【面试题021】包含min函数的栈

    [面试题021]包含min函数的栈  MinStack.cpp: 1234567891011121314151617181920212223242526272829303132333435363738 ...

  4. 面试经典-设计包含min函数的栈

    问题:设计包含min函数的栈(栈) 定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素. 要求函数min.push以及pop的时间复杂度都是O(1). 解答:push 和pop的时间复杂度 ...

  5. 包含min函数的栈 ,二叉树的镜像

    包含min函数的栈 问题 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 代码 # -*- coding:utf-8 -*- class Sol ...

  6. 算法: 包含min函数的栈

    * @Description 包含min函数的栈* @问题:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)).* @思路: 1:Stack 类中的p ...

  7. 《剑指offer》 包含min函数的栈

    本题来自<剑指offer> 包含min函数的栈 题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 思路: 举例子让抽象问题具体 ...

  8. 41. 包含min函数的栈

    包含min函数的栈 描述 设计一个支持push,pop,top等操作并且可以在O(1)时间内检索出最小元素的堆栈. push(x)–将元素x插入栈中 pop()–移除栈顶元素 top()–得到栈顶元素 ...

  9. 《剑指offer》第三十题(包含min函数的栈)

    // 面试题30:包含min函数的栈 // 题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min // 函数.在该栈中,调用min.push及pop的时间复杂度都是O(1). #i ...

  10. 《剑指offer》— JavaScript(20)包含min函数的栈

    包含min函数的栈 题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. 实现代码 var stack = []; function push(node) { stack. ...

随机推荐

  1. <<敏捷开发>>读书笔记

    1.走进敏捷 * 组织成功 增加业务专家,较少bug和测试的交流成本,即使取消不好的技术 首先发布最有价值的特性,时常发布新的版本,即使改进软件 * 技术成功 结对编程,代码审核,确保同一份代码有不同 ...

  2. url中参数以及callback后面的串

    最近在写一个京东的爬虫,在模拟其http请求访问评论时,遇到http://club.jd.com/productpage/p-1419543-s-0-t-0-p-0.html?callback=jQu ...

  3. overfitting过拟合

    来自:https://www.zhihu.com/question/32246256 其实不完全是噪声和假规律会造成过拟合. (1)打个形象的比方,给一群天鹅让机器来学习天鹅的特征,经过训练后,知道了 ...

  4. JVM参数(三)打印所有XX参数及值

    本篇文章基于Java 6(update 21oder 21之后)版本, HotSpot JVM 提供给了两个新的参数,在JVM启动后,在命令行中可以输出所有XX参数和值. -XX:+PrintFlag ...

  5. Linux 服务器的网络配置 - 1. 查看 Linux 服务器的网络连接

    1. 查看 Linux 服务器的网络连接 1)查看主机名: liuqian@ubuntu:~$ hostname ubuntu 2)查看 ip 地址: 用 ifconfig 即可,这里介绍命令组合用法 ...

  6. weblogic 优化设置 http://wenku.baidu.com/view/c42e7a5bbe23482fb4da4cf2.html

    引自:http://wenku.baidu.com/view/c42e7a5bbe23482fb4da4cf2.html

  7. 记一个PowerShell的方法调用 --ResolveWindowsPrincipal

    没时间系统的学习PowerShell, 只能现学现用. 这段函数调用花了我半个多小时才搞定. 呵呵. 您别笑我, 呵呵. 在这里个例子里, 包括了PowerShell里如下的一些要点: 静态函数的调用 ...

  8. asp.net中选择数字时,另外的数字同时发生变化(适用dev控件)

      关键: <ClientSideEvents ValueChanged="AgioChanged" />   <div class="col-sm-4 ...

  9. python之I/O多路复用

         python  IO多路复用 一.多路复用概念: 监听多个描述符(文件描述符(windows下暂不支持).网络描述符)的状态,如果描述符状态改变 则会被内核修改标志位,进而被进程获取进而进行 ...

  10. mysql 不是主键不能删除的保护问题解决办法?

       select * from t_answerexams;      delete from  t_answerexams  where  selectid = 'c4582502-8b27-44 ...