自定义栈类型,具有找到站内最小元素的min函数 ,且min(),pop(),push()函数的时间复杂度为O(1)

基本思想:

// 借助一个辅助栈,入栈时,若新元素比辅助栈栈顶元素小,则直接放入辅助站
// 反之,辅助站中放入次小元素(即辅助栈栈顶元素)====保证最小元素出栈时,次小元素被保存

static class MyStack {
Integer[] value = new Integer[10];
int index = 0;
MyStack miniStack;// 辅助栈
void push(Integer vInteger) {
this.push(vInteger);
// 辅助栈中无元素或栈顶元素比新插入元素大
if (miniStack.size() == 0 || miniStack.peek() > vInteger) {
miniStack.push(vInteger);
} else {// 新插入元素较小
miniStack.push(miniStack.peek());
}
}
Integer peek() {
return miniStack.pop();
}
// 出栈时,主栈与辅助栈一同弹出元素
Integer pop() {
miniStack.pop();
return value[index];
}
Integer mini() {
return miniStack.pop();
}
Integer size() {
return index;
}
}

  

上一篇:JAVA程序比系统落后8个小时


下一篇:gstreamer 编译实例