[Leetcode] - 20
- stack 은 python 의 list로 구현
- python 의 list는 동적리스트
- stack 의 push, pop 시간복잡도
- O(1) - 동적리스트는 메모리가 부족하면 필요한 메모리를 추가로 할당 (2배씩 증가)
- 메모리를 추가로 할당할 때 전체 리스트를 복사하기 때문에 insert의 시간복잡도는 O(N)
- 메모리 doubling은 어쩌다 한번 일어남
- Amotrized time complexity
- 최악의 경우의 시간복잡도를 전체에 걸쳐 나눠주는식으로 알고리즘의 시간복잡도를 계산
- 항상 최악을 가정하고 시간복잡도를 계산하는것은 적절하지 않기 때문
- insert의 최악의 경우 시간복잡도 O(N)을 전체에 걸쳐나눠줘야함
- 따라서 insert의 시간복잡도는 O(1)
class Solution:
def isValid(self, s: str) -> bool:
stack = []
table = {
')':'(',
'}':'{',
']':'[',
}
for c in s:
if c not in table:
stack.append(c)
elif not stack or table[c] != stack.pop():
return False
return len(stack) == 0
Author And Source
이 문제에 관하여([Leetcode] - 20), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jisngprk/Leetcode-20저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)