可查询最值的栈
2016-05-16 21:57
337 查看
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
代码如下:
定义两个栈,一个stackData,一个stackMin。将数组中的元素一个个压入stackData栈的时候,如果第一次压入栈,则将第一个元素也压入到stackMin栈中去,然后继续压入第二个元素到stackData里面,在压入的时候需要判断一下压入的值是否比stackMin中栈顶的值大,如果大,则压入一个和栈顶一样的元素进入stackMin,如果小,则也压入第二个元素到stackMin,依次类推直到最后一个元素截止就能得到栈最小元素。
代码如下:
定义两个栈,一个stackData,一个stackMin。将数组中的元素一个个压入stackData栈的时候,如果第一次压入栈,则将第一个元素也压入到stackMin栈中去,然后继续压入第二个元素到stackData里面,在压入的时候需要判断一下压入的值是否比stackMin中栈顶的值大,如果大,则压入一个和栈顶一样的元素进入stackMin,如果小,则也压入第二个元素到stackMin,依次类推直到最后一个元素截止就能得到栈最小元素。
package com.stack; import java.util.Stack; public class Solution { public Stack<Integer> stackData =new Stack<Integer>(); public Stack<Integer> stackMin =new Stack<Integer>(); public void push(int node) { stackData.push(node); if(stackMin.isEmpty()){ stackMin.push(node); }else if(node< stackMin.peek().intValue()){ stackMin.push(node); }else{ stackMin.push(stackMin.peek()); } } public void pop() { stackData.pop(); stackMin.pop(); } public int top() { return stackData.pop(); } public int min() { return stackMin.peek(); } }
相关文章推荐
- Linux查看程序端口占用情况
- 基于Web的系统测试与传统的软件测试
- [Ruby笔记]4. ruby 读写文件 File open read write new
- java开发前奏
- Lua学习笔记Day1-Lua标准库函数
- RHEL7计划任务和日志管理
- 哥德巴赫曾猜测
- 一致性hash算法简介
- 4.swift 知识点积累 as 闭包和函数类型
- 结构图
- ubuntu下telnet安装
- Mysql读写分离
- 深度学习之目标检测进展
- block内self的循环引用的问题
- 25. Reverse Nodes in k-Group
- hdoj-5610-Baby Ming and Weight lifting
- 机器学习中使用的神经网络第六讲笔记
- Python 格式化字符串
- 正则表达式(Regular Expressions)
- Build错误TransformException:java.exe