0%

剑指offer029包含min函数的栈

Problem:

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

Intuition:

这个题目我们要稍微注意一下,找出最小元素的操作可能会进行多次,不是进行一次就结束了。这就意味着我们仅仅用一个整数存最小元素的方案是行不通的,我们要某种数据结构将所有栈中的元素按大小顺序进行保存。

Solution:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class CodingInterview_029 {
private Stack<Integer> dataStack=new Stack<>();
private Stack<Integer> minStack=new Stack<>();
public void push(int node){
dataStack.push(node);
if(minStack.isEmpty()||node<minStack.peek()){
minStack.push(node);
}
}

public void pop(){
int dataTop=dataStack.peek();
int minTop=minStack.peek();
dataStack.pop();
if(dataTop==minTop){
minStack.pop();
}
}

public int top(){
return dataStack.peek();
}

public int min(){
return minStack.peek();
}
}