0%

min-stack

Min Stack – LeetCode 155

Problem

Description

Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.

  • push(x) – Push element x onto stack.

  • pop() – Removes the element on top of the stack.

  • top() – Get the top element.

  • getMin() – Retrieve the minimum element in the stack.

Example

MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); –> Returns -3.
minStack.pop();
minStack.top(); –> Returns 0.
minStack.getMin(); –> Returns -2.

Answer

Original

Code

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
class MinStack {
public:
/** initialize your data structure here. */
MinStack() {
}

void push(int x) {
if(s.empty() || x <= min.top()) {s.push(x); min.push(x);}
else {s.push(x);}
}

void pop() {
if(s.top() == min.top()) {s.pop();min.pop();}
else s.pop();
}

int top() {
return s.top();
}

int getMin() {
return min.top();
}
private:
stack<int> s,min;
};

思路

看题说话,用一个min来保持当前的最小值即可。
耗时$26$ ms,排名$33.71\%$

Better

还没看到更好的实现。