首页 > 其他 > 详细

剑指offer 20. 举例让抽象具体化 包含min函数的栈

时间:2019-05-22 12:58:57      阅读:111      评论:0      收藏:0      [点我收藏+]

题目描述

定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
 
 
代码如下:

import java.util.Stack;
import java.util.Arrays;
public class Solution {

private int size;
private Stack<Integer> minStack=new Stack<Integer>();
private int min=Integer.MAX_VALUE;
private Integer[] elements = new Integer[10];

private void ensureCapacity(int size) {
// TODO Auto-generated method stub
int len = elements.length;
if(size > len){
int newLen = (len*3)/2+1; //每次扩容方式
elements = Arrays.copyOf(elements, newLen);
}
}



public void push(int node) {
ensureCapacity(size+1);
elements[size++]=node;
if (node<=min) {
minStack.push(node);
min=minStack.peek();
}else {
minStack.push(min);
}

}

public void pop() {
Integer top=top();
if (top!=null) {
elements[size-1]=(Integer)null;
}
size--;
minStack.pop();
min=minStack.peek();

}

public int top() {

if(!empty()){
if(size-1>=0)
return elements[size-1];
}
return (Integer) null;

}
public boolean empty(){
return size == 0;
}
public int min() {

return min;

}
}


 

 

剑指offer 20. 举例让抽象具体化 包含min函数的栈

原文:https://www.cnblogs.com/Transkai/p/10905234.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!