File tree Expand file tree Collapse file tree 1 file changed +46
-0
lines changed
longest-consecutive-sequence Expand file tree Collapse file tree 1 file changed +46
-0
lines changed Original file line number Diff line number Diff line change 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
You canโt perform that action at this time.
0 commit comments