栈(JAVA)
来源:互联网 发布:linux centos 编辑:程序博客网 时间:2024/06/07 01:33
使用内置的栈实现O(1)计算栈的最小元素,即使用一个栈记录栈元素,一个栈记录当前栈的最小元素,以空间换时间
import java.util.Stack;/** * 栈 * @author yinming.yu * */public class Main {public static void main(String[] args) {// TODO Auto-generated method stubMyStack stack = new MyStack();int[] a = {9, 2, 1, 10, -59};for(int item : a){stack.push(item);System.out.println("当前入栈元素 "+item+" 该元素入栈后,栈内最小元素为 "+stack.min.peek());}while(!stack.isEmpty()){int top = stack.pop();System.out.println("当前出栈元素 "+top+" 该元素出栈后,栈内最小元素为 "+(stack.isEmpty()?"栈已空,没有最小值了":stack.min.peek()));}/** * 输出结果: * 当前入栈元素 9 该元素入栈后,栈内最小元素为 9当前入栈元素 2 该元素入栈后,栈内最小元素为 2当前入栈元素 1 该元素入栈后,栈内最小元素为 1当前入栈元素 10 该元素入栈后,栈内最小元素为 1当前入栈元素 -59 该元素入栈后,栈内最小元素为 -59当前出栈元素 -59 该元素出栈后,栈内最小元素为 1当前出栈元素 10 该元素出栈后,栈内最小元素为 1当前出栈元素 1 该元素出栈后,栈内最小元素为 2当前出栈元素 2 该元素出栈后,栈内最小元素为 9当前出栈元素 9 该元素出栈后,栈内最小元素为 栈已空,没有最小值了 */}}/** * 使用O(1)求栈中的最小元素 * * */class MyStack{Stack<Integer> element = new Stack<Integer>();//存放元素Stack<Integer> min = new Stack<Integer>();//存放栈中当前最小元素//如果当前入栈元素可以成为最小值,那么同时入栈最小值栈public void push(Integer item){element.push(item);//如果当前入栈元素小于或等于当前最小元素,那么就入min栈if(min.isEmpty()){min.push(item);}else{if(item <= min.peek()){min.push(item);}}}public Integer pop(){int top = element.pop();//如果当前最小值出栈,min栈保存的最小值也要出战,2这最小值保持一致if(top == min.peek()){//min也需要出栈min.pop();}return top;}public boolean isEmpty(){return element.isEmpty();}}
阅读全文
0 0
- java 栈
- java 栈
- Java栈
- java栈
- java栈
- java 栈
- Java 栈
- java 栈
- Java栈
- java栈
- 栈(JAVA)
- java-栈
- [Java]Java栈与堆
- java 栈----java.util.Stack
- Java栈和Java堆
- Java栈和Java堆
- 【Java】Java栈的使用
- java内存栈java虚拟机
- Extjs 集成kindeditor
- Extjs gridt自适应高度
- EXTJS formpanel返回不走success
- VML中表示空格
- 前端页面刷新
- 栈(JAVA)
- java 日期格式化
- Java: Best way of converting List<Integer> to List<String>
- 【hpu oj 1007 严格递增连续子段 贪心 模拟】
- LeetCode 66. Plus One
- java下载远程服务器文件
- 浏览器关闭事件
- z-index怎么用
- 常用IDE