def longestConsecutive(nums):
nums = set(nums) # O(n) 중복된 숫자를 없애기 위함
answer = 0
for num in nums: # O(n)
if num -1 not in nums:
cnt = 1
while num + 1 in nums:
num += 1
cnt += 1
answer = max(answer, cnt)
return answer
nums = [1,2,3,1,8,4,5,6,7,8,9,10]
print(longestConsecutive(nums)) # 10
상수 시간도 완전 무시할 순 없다.
해시테이블 생성은 리스트 생성처럼 O(n)
def bfs(graph, start_v):
visited = [start_v]
queue = deque(start_v)
while queue:
cur_v = queue.popleft()
for v in graph[cur_v]:
if v not in visited:
visited.append(v)
queue.append(v)
return visited
기준점: 10^8
시간복잡도는 만능이 아니다. (70%는 계산하면 도움이 된다.)
풀이에 대한 확신
알고리즘 떠올리기