- 문제 링크: https://leetcode.com/problems/min-stack/
- 난이도: Medium
스택을 구현하는 문제인데, 현재 스택의 최소값을 가져오는 getMin 연산을 구현하는게 관건인 문제이다. O(1) 시간복잡도가 필요하다
스택의 각 노드가 그 지점에서의 최소값을 들고 있으면 된다.
class MinStack:
def __init__(self):
self.stack = [] # (val, current_min)
def push(self, val: int) -> None:
current_min = val if len(self.stack) == 0 else self.stack[-1][1]
self.stack.append((val, min(current_min, val)))
def pop(self) -> None:
self.stack.pop()
def top(self) -> int:
return self.stack[-1][0]
def getMin(self) -> int:
return self.stack[-1][1]
반응형
'Online Judge > LeetCode' 카테고리의 다른 글
[LeetCode][Python] 22. Generate Parentheses (0) | 2024.09.08 |
---|---|
[LeetCode][Python] 150. Evaluate Reverse Polish Notation (0) | 2024.09.08 |
[LeetCode][Python] 20. Valid Parentheses (0) | 2024.09.08 |
[LeetCode][Python] 42. Trapping Rain Water (0) | 2024.09.08 |
[LeetCode][Python] 11. Container With Most Water (0) | 2024.09.08 |