반응형
문제
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();
}
}
누적되는 알고리즘 접근 설명서
'알고리즘 풀이' 카테고리의 다른 글
.leetcode(763. Partition Labels) (0) | 2021.01.13 |
---|---|
.leetcode(20. Valid Parentheses) (0) | 2021.01.13 |
.leetcode(53. Maximum Subarray) (0) | 2021.01.09 |
.leetcode(70. Climbing Stairs) (0) | 2021.01.06 |
.leetcode(543. Diameter of Binary Tree) (0) | 2021.01.05 |