AcWing 41. 包含min函数的栈
宋标 Lv5

题目

设计一个支持push,pop,top等操作并且可以在O(1)时间内检索出最小元素的堆栈。

  • push(x)–将元素x插入栈中
  • pop()–移除栈顶元素
  • top()–得到栈顶元素
  • getMin()–得到栈中最小元素

数据范围

操作命令总数

样例

MinStack minStack = new MinStack();
minStack.push(-1);
minStack.push(3);
minStack.push(-4);
minStack.getMin();   --> Returns -4.
minStack.pop();
minStack.top();      --> Returns 3.
minStack.getMin();   --> Returns -1.

题解

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
28
29
30
class MinStack {

int tail = -1;
int[] stacks;
LinkedList<Integer> mins;

/** initialize your data structure here. */
public MinStack() {
mins = new LinkedList();
stacks = new int[105];
}

public void push(int x) {
if (mins.isEmpty() || x <= mins.peek()) mins.push(x);
else mins.push(mins.peek());
stacks[++tail] = x;
}

public void pop() {
-- tail; mins.pop();
}

public int top() {
return stacks[tail];
}

public int getMin() {
return mins.peek();
}
}
 评论