含记录最小元素的堆栈
来源:互联网 发布:郑爽整了哪些部位知乎 编辑:程序博客网 时间:2024/06/05 09:52
设计一种堆栈(stack),它能 push,pop,并且能在常数时间内O(1)找到当前栈中的最小元素。
使用double space方式,用空间换时间:
public class Stack{int [][]stack;int top;public Stack(){stack = new int[10][2];top =0;}public void push(int a){if(top == 0)stack[top][1] = a;else if(a<stack[top-1][1])stack[top][1] = a;elsestack[top][1] = stack[top-1][1];stack[top][0] = a;top ++;}public int pop(){if(top>0){top--;return stack[top][0];}elsereturn 0;}public int findMin(){if(top>0)return stack[top-1][1];elsereturn 0;}public static void main(String args[]){Stack s = new Stack();s.push(13);s.push(5);s.push(7);s.push(2);s.push(9);s.push(14);System.out.println(s.findMin());s.pop();System.out.println(s.findMin());s.pop();System.out.println(s.findMin());s.pop();System.out.println(s.findMin());s.pop();System.out.println(s.findMin());s.pop();System.out.println(s.findMin());}}
仅增加一个变量记录最小值,每次pop,push时需重新记录最小值。
public class Stack2 {int []stack;int top = 0;int min = 2147483647;public Stack2(){stack = new int[10];}public void push(int a){if(a<min)min=a;stack[top] = a;top++;}public int pop(){if(top>0){top--;if(top == 0)min=0;else if(stack[top] == min){min = stack[top-1];for(int i=0;i<top-1;i++)if(stack[i]<min)min = stack[i];}return stack[top];}return 0;}public int findMin(){return min;}public static void main(String[] args) {Stack2 s = new Stack2();s.push(13);s.push(5);s.push(7);s.push(2);s.push(9);s.push(14);System.out.println(s.findMin());s.pop();//14System.out.println(s.findMin());s.pop();//9System.out.println(s.findMin());s.pop();//2System.out.println(s.findMin());s.pop();//7System.out.println(s.findMin());s.pop();//5System.out.println(s.findMin());}}
- 含记录最小元素的堆栈
- 实现堆栈中最小的元素getMin()
- 堆栈中的最小元素
- Java记录 -56- 详解HashSet不含重复元素的实现
- 面试算法:堆栈元素的在线排序
- 含重复元素的全排列
- 含重复元素序列的全排列
- 含重复元素的全排列
- 含重复元素的排列问题
- 旋转数组的最小元素
- 最小的k个元素
- 旋转数组的最小元素
- 旋转数组的最小元素
- 旋转数组的最小元素
- 旋转数组的最小元素
- 求栈的最小元素
- 旋转数组的最小元素
- 包含最小元素的栈
- 蝴蝶兰与鳞托菊
- java日期处理bean
- 从“看”到“玩 智能电视开打“双核”战
- ecshop模板教程——类似淘宝滚屏漂浮返回
- java获取ip地址
- 含记录最小元素的堆栈
- 用VMware虚拟机安装CentOS-5.0 linux 详情 附图片
- 编译的flash文件运行报错:Error #2032
- 盘点:2012中国互联网大会十大亮点
- JEditorPane使用技巧
- 然手时光,醉生梦死
- 晶振与PPM
- mysql Error Nr. 1045
- IBM 50条狗 智力题