Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 알고리즘풀기
- 파이썬릿코드풀기
- 파이썬 릿코드
- 릿코드 파이썬
- python 릿코드
- leetcode풀이
- python zip_longest
- LeetCode
- 알고리즘풀이
- python Leetcode
- 파이썬 알고리즘 풀기
- 릿코드
- 파이썬알고리즘풀기
- 파이썬 알고리즘
- python 알고리즘
- python sorted
- 잇츠디모
- leetcode 풀기
- 코틀린기초
- python xor
- 파이썬알고리즘
- 파이썬릿코드
- python priority queue
- 릿코드 풀기
- 릿코드풀기
- 상가수익률계산기
- leetcode풀기
- 릿코드풀이
- 파이썬 프로그래머스
- binary search
Archives
- Today
- Total
소프트웨어에 대한 모든 것
LeetCode 풀기 - 155. Min Stack 본문
반응형
155. Min Stack
https://leetcode.com/problems/min-stack/
문제)
솔루션1)
- 두 개의 스택 활용(Normal Stack, Min Stack)
- Normal Stack에 요소가 추가될 때 Min Stack에는 현재의 min 요소를 추가
- getMin() 호출 시 Min Stack에서 가장 상단의 요소를 리턴하면 됨.
class MinStack:
def __init__(self):
# 일반 스택
self.arr = []
# 최소값 스택
self.min_arr = []
def push(self, val: int) -> None:
# 일반 스택에 추가
self.arr.append(val)
if len(self.min_arr) == 0:
# 최소값 스택에 비어 있으므로 그냥 추가
self.min_arr.append(val)
else:
# 가장 상단의 값과 현재 추가되는 값의 최소값을 최소값 스택에 추가
self.min_arr.append(min(val, self.min_arr[-1]))
def pop(self) -> None:
self.min_arr.pop()
return self.arr.pop()
def top(self) -> int:
return self.arr[-1]
def getMin(self) -> int:
# 최소값 스택의 상단을 리턴
return self.min_arr[-1]
# Your MinStack object will be instantiated and called as such:
# obj = MinStack()
# obj.push(val)
# obj.pop()
# param_3 = obj.top()
# param_4 = obj.getMin()
솔루션2)
- 스택을 하나만 사용
- 스택에 추가되는 요소는 튜플(val, min val) 형태
class MinStack:
def __init__(self):
self.arr = []
def push(self, val: int) -> None:
if len(self.arr) == 0:
self.arr.append((val, val))
else:
self.arr.append((val, min(val, self.arr[-1][1])))
def pop(self) -> None:
return self.arr.pop()
def top(self) -> int:
return self.arr[-1][0]
def getMin(self) -> int:
return self.arr[-1][1]
반응형
'알고리즘 > LeetCode' 카테고리의 다른 글
LeetCode 풀기 - 380. Insert Delete GetRandom O(1) (0) | 2021.11.03 |
---|---|
LeetCode 풀기 - 1832. Check if the Sentence Is Pangram (0) | 2021.11.03 |
LeetCode 풀기 - 231. Power of Two (0) | 2021.11.02 |
LeetCode 풀기 - 20. Valid Parentheses (0) | 2021.10.31 |
LeetCode 풀기 - 136. Single Number (0) | 2021.10.31 |
Comments