Skip to content

Commit b9bb77a

Browse files
longest consecutive sequence solution
1 parent 8b3836f commit b9bb77a

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
from typing import List
2+
3+
4+
class Solution:
5+
"""
6+
TC: O(n), SC: O(n)
7+
8+
n์€ nums ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด.
9+
10+
ํ’€์ด๊ณผ์ •:
11+
- nums๋ฅผ set์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ๊นŒ์ง„ ์•Œ๊ฒ ๋Š”๋ฐ ์ดํ›„๋กœ ํ’€์ด๊ฐ€ ์ด์–ด์ง€์ง€ ์•Š์•˜์Œ
12+
- ์—ฌ๋Ÿฌ ํ’€์ด ๋ฐฉ๋ฒ•์„ ์‹œ๋„ํ•ด๋ณด๋‹ค๊ฐ€ ๋„์ €ํžˆ ์ƒ๊ฐ๋‚˜์ง€ ์•Š์•„์„œ LeetSub ํ”Œ๋Ÿฌ๊ทธ์ธ ํžŒํŠธ 4/5๊นŒ์ง€ ๋ด„
13+
- "num - 1์ด set์— ์—†๋‹ค๋ฉด sequence์˜ ์‹œ์ž‘ ์ˆซ์ž์ผ ์ˆ˜ ์žˆ๋‹ค"์—์„œ ํžŒํŠธ๋ฅผ ์–ป์–ด์„œ ํ’€๊ฒŒ ๋จ
14+
15+
ํ’€์ด:
16+
- set์— ๋„ฃ์–ด์„œ O(1) ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ
17+
- set์— num-1 ๊ฐ’์ด ์žˆ๋‹ค๋ฉด num์€ sequence์˜ ์‹œ์ž‘ ์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ skip
18+
- ์‹œ์ž‘ ์ˆซ์ž์—์„œ cnt(+1, +2, +3, ...)๋ฅผ ๋”ํ•ด๊ฐ€๋ฉฐ set์— ์žˆ๋Š”์ง€ ํ™•์ธ
19+
- answer์™€ cnt ์ค‘ ๋” ํฐ ๊ฐ’์„ answer์— ์ €์žฅ
20+
21+
TC:
22+
- set(nums): n๊ฐœ ์›์†Œ ์‚ฝ์ž…. O(n).
23+
- for num in nums_set: set ์ „์ฒด ์ˆœํšŒ. O(n).
24+
- if num - 1 in nums_set: ํ•ด์‹œ ๊ธฐ๋ฐ˜ ์กฐํšŒ. O(1).
25+
- while: ์‹œ์ž‘ ์ˆซ์ž์—์„œ๋งŒ ์‹คํ–‰. for-while ์ค‘์ฒฉ์ด๋ผ O(nยฒ)์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ,
26+
๊ฐ ์›์†Œ๋Š” while์—์„œ ์ตœ๋Œ€ 1๋ฒˆ๋งŒ ๋ฐฉ๋ฌธ๋จ. ์ „์ฒด while ๋ฐ˜๋ณต ํ•ฉ๊ณ„ = O(n).
27+
- ์ข…ํ•ฉ: O(n).
28+
29+
SC:
30+
- nums_set: ์ตœ์•… n๊ฐœ ์›์†Œ. O(n).
31+
- answer, cnt: ์ƒ์ˆ˜. O(1).
32+
- ์ข…ํ•ฉ: O(n).
33+
"""
34+
def longestConsecutive(self, nums: List[int]) -> int:
35+
nums_set = set(nums)
36+
answer = 0
37+
38+
for num in nums_set:
39+
if num - 1 in nums_set:
40+
continue
41+
cnt = 0
42+
while num + cnt in nums_set:
43+
cnt += 1
44+
answer = max(answer, cnt)
45+
46+
return answer

0 commit comments

Comments
ย (0)