알고리즘 풀이
.leetcode(155. Min Stack)
silvergoni
2021. 1. 9. 21:36
반응형
문제
https://leetcode.com/problems/min-stack/
문제 풀기 전
- stack을 구현한다고 생각했다.
- 괜히 array로 만들어서 사이즈 도달하면 2배 늘려줘야지 생각하고 만들었따.
- 문제를 다시 보고(모든 시간이 상수시간으로 나와야한다는 의미를 보고) 다시 풀었다.
직접 푼 풀이
소요시간: x(문제를 잘못 이해함)
느낀점
- 솔루션을 보고 Stack모델을 써도 되는구나 했다. 무조건 array로 구현해야하는 줄 알았는데.. stack두개를 써서 문제를 풀었다.
- 솔루션에는 여러가지 방법이 나오는데 개념적으로 비슷한거 같았다.
솔루션 공부 후 추가로 푼 풀이
class MinStack {
private Stack<Integer> origin;
private Stack<Integer> min;
/** initialize your data structure here. */
public MinStack() {
origin = new Stack<>();
min = new Stack<>();
}
public void push(int x) {
origin.push(x);
if (min.isEmpty() || x <= min.peek()) {
min.push(x);
}
}
public void pop() {
int x = origin.pop();
if (x == min.peek()) {
min.pop();
}
}
public int top() {
return origin.peek();
}
public int getMin() {
return min.peek();
}
}