Skip to content

Commit aeffb46

Browse files
committed
solution: longest-consecutive-sequence
1 parent bd4beca commit aeffb46

File tree

2 files changed

+101
-5
lines changed

2 files changed

+101
-5
lines changed
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
class Solution:
2+
def longestConsecutive(self, nums: List[int]) -> int:
3+
4+
# Edge case
5+
if not nums:
6+
return 0
7+
8+
# 1. HashSet
9+
table = set(nums)
10+
11+
logest_seq = 0
12+
13+
# 2. ์—ฐ์† ์‹œํ€€์Šค์˜ ์‹œ์ž‘์  ํƒ์ƒ‰
14+
for num in table:
15+
if (num - 1) not in table: # !!
16+
current_num = num
17+
seq = 1
18+
19+
# ์‹œํ€€์Šค ํ™•์žฅ
20+
while (current_num + 1) in table:
21+
current_num += 1
22+
seq += 1
23+
24+
# ์‹œํ€€์Šค ๊ธธ์ด ์—…๋ฐ์ดํŠธ
25+
logest_seq = max(logest_seq, seq)
26+
27+
return logest_seq
28+
29+
30+
"""
31+
Time complexity : O(N)
32+
- step 1 (iteration) : O(N)
33+
- ๋ชจ๋“  ์ˆซ์ž๋ฅผ ํ•ด์‹œ์…‹(set)์— ์ €์žฅ
34+
- ํ•ด์‹œ์…‹ ์‚ฌ์šฉ ์ด์œ  : ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ณ  O(1) ํƒ์ƒ‰ ๊ฐ€๋Šฅ
35+
- ์š”์†Œ์˜ ์ถ”๊ฐ€, ์‚ญ์ œ, ์กด์žฌ ์—ฌ๋ถ€ ํ™•์ธ์— ํ‰๊ท ์ ์œผ๋กœ O(1) ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ
36+
- ์ด ์„ฑ์งˆ ๋•๋ถ„์— ํ•˜๋‹จ์˜ ํ’€์ด๊ฐ€ ๊ฐ„๋‹จํ•ด์งˆ ์ˆ˜ ์žˆ์Œ
37+
- step 2 (iteration) : O(N)
38+
- ๊ฐ ์š”์†Œ๋Š” for, while ์—์„œ ์ตœ๋Œ€ ๋‘๋ฒˆ ์ฒ˜๋ฆฌ๋จ
39+
40+
Space Complexity)
41+
- ํ•ด์‹œ์…‹(๋”•์…”๋„ˆ๋ฆฌ): O(N) (์ตœ์•…์˜ ๊ฒฝ์šฐ, ๋ชจ๋“  ์ˆซ์ž๊ฐ€ ๊ณ ์œ ํ•  ๋•Œ)
42+
"""
43+
44+
45+
""" ์ฒซ๋ฒˆ์งธ ํ’€์ด
46+
- ์‹œ๊ฐ„๋ณต์žก๋„ ๊ณ ๋ ค X. O(NlogN)
47+
- Edge case ๋Œ€์‘ ํ•„์š”
48+
- ์—ฐ์†๋œ ์š”์†Œ ์‹œํ€€์Šค๊ฐ€ ํ•˜๋‚˜๊ฐ€ ์•„๋‹ ๊ฒฝ์šฐ ๊ณ ๋ ค ํ•„์š”
49+
50+
class Solution:
51+
def longestConsecutive(self, nums: List[int]) -> int:
52+
53+
nums.sort() # ์˜ค๋ฆ„์ฐจ์ˆœ
54+
55+
cnt = 1
56+
tmp = nums[0]
57+
58+
for i in range(1, len(nums)):
59+
if nums[i] == tmp + 1:
60+
cnt += 1
61+
tmp = nums[i]
62+
63+
return cnt
64+
"""

โ€Žtop-k-frequent-elements/wozlsla.pyโ€Ž

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,47 @@
33

44
class Solution:
55
def topKFrequent(self, nums: List[int], k: int) -> List[int]:
6-
# ํ•˜๋‚˜์”ฉ ์ „๋ถ€ ๋Œ๋ฉด์„œ ๋นˆ๋„์ˆ˜ ์ €์žฅ, k๊ฐœ๋งŒํผ๋งŒ
7-
# cnt ํ•จ์ˆ˜๋ฅผ ์จ์„œ ๋น„๊ตํ›„ ์ €์žฅ -> ๋” ๋งŽ์€ ๋ฐ˜๋ณต?
8-
# ์ผ๋‹จ ํ•œ๋ฒˆ์€ ๋‹ค ๋Œ์•„์•ผํ•จ. ๊ฐ€์žฅ ์ ๊ฒŒ ๋Œ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•?
9-
# ์ „์ฒด ์ˆœ์ฐจ ๋น„๊ต?
106

11-
table = {}
7+
table = {} # 1. Initialize
128

9+
# 2. Populate frequency map
1310
for i in range(len(nums)):
1411
table[nums[i]] = table.get(nums[i], 0) + 1
1512

13+
# 3. Find top K frequent elements
1614
topk = heapq.nlargest(k, table, key=table.get)
1715
return topk
16+
17+
18+
"""
19+
* ์ดˆ๊ธฐ ์•„์ด๋””์–ด *
20+
- ํ•˜๋‚˜์”ฉ ์ „๋ถ€ ๋Œ๋ฉด์„œ ๋นˆ๋„์ˆ˜ ์ €์žฅ, k๊ฐœ ๋งŒํผ๋งŒ -> ๋น„๊ต/์ •๋ ฌ ๊ณผ์ • ๊ณ ๋ ค ํ•„์š”
21+
- count ํ•จ์ˆ˜๋ฅผ ์จ์„œ ๋น„๊ตํ›„ ์ €์žฅ -> ๋” ๋งŽ์€ ๋ฐ˜๋ณต? O
22+
- ์ผ๋‹จ ํ•œ๋ฒˆ์€ ๋‹ค ๋Œ์•„์•ผํ•จ. ๊ฐ€์žฅ ์ ๊ฒŒ ๋Œ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•?
23+
- ์ „์ฒด ์ˆœ์ฐจ ๋น„๊ต?
24+
- Counter, ๋นˆ๋„์ˆ˜ + top K๊ฐœ
25+
26+
Time complexity : O(N + MlogK)
27+
- step 2 (iteration) : O(N)
28+
- ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด๊ฐ€ N ์ผ๋•Œ, nums ๋ชจ๋‘ ์ˆœํšŒ
29+
- step 3 (iteration) : O(NlogK)
30+
- heapq.nlargest ํ•จ์ˆ˜๋Š” table์˜ ๋ชจ๋“  M๊ฐœ์˜ ์š”์†Œ(ํ‚ค-๊ฐ’ ์Œ)๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ, ํฌ๊ธฐ k์˜ ์ตœ์†Œ ํž™์„ ์œ ์ง€
31+
- ํž™์— ์‚ฝ์ž…(or ์ œ๊ฑฐ ํ›„ ์‚ฝ์ž…) ์—ฐ์‚ฐ์€ ํž™์˜ ํฌ๊ธฐ k์— ๋น„๋ก€, O(logK)
32+
- ๊ฐ ์š”์†Œ์— ์ ์šฉ O(MlogK), ์ตœ์•…์˜ ๊ฒฝ์šฐ O(NlogK). M์€ N์„ ์ดˆ๊ณผํ•  ์ˆ˜ ์—†์Œ.
33+
34+
Space Complexity)
35+
- ๋นˆ๋„์ˆ˜ ๋งต (๋”•์…”๋„ˆ๋ฆฌ): O(N) (์ตœ์•…์˜ ๊ฒฝ์šฐ, ๋ชจ๋“  ์ˆซ์ž๊ฐ€ ๊ณ ์œ ํ•  ๋•Œ)
36+
- ํž™ (heapq.nlargest ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉ): O(K)
37+
38+
* heapq.nlargest *
39+
- ๊ฐ€์žฅ ํฐ k๊ฐœ์˜ ์š”์†Œ๋ฅผ ์ฐพ๋Š” ํ•จ์ˆ˜
40+
1. ํž™ ์ดˆ๊ธฐํ™”. ํฌ๊ธฐ๊ฐ€ k์ธ (์ตœ์†Œ)ํž™ ์ƒ์„ฑ
41+
2. ์ˆœํšŒ ๋ฐ ํž™ ๊ด€๋ฆฌ
42+
- table ์ „์ฒด๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ key=table.get ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๋น„๊ต
43+
- ํž™์ด k๊ฐœ ๋ฏธ๋งŒ์ผ ๊ฒฝ์šฐ ์š”์†Œ ์ถ”๊ฐ€, ๋‹ค ์ฐผ์„๊ฒฝ์šฐ ๋น„๊ตํ›„ ์žฌ์ •๋ ฌ
44+
- ํ˜„์žฌ ์š”์†Œ b์˜ ๊ฐ’๊ณผ ํž™์˜ ๋ฃจํŠธ์— ์žˆ๋Š” ์š”์†Œ a๋ฅผ ๋น„๊ต
45+
- b > a ์ด๋ฉด, a๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  b๋ฅผ ์ถ”๊ฐ€ ๋ฐ ์žฌ์ •๋ ฌ
46+
- b <= a ์ด๋ฉด, b๋ฅผ ๋ฒ„๋ฆผ
47+
- ํž™์— ์žˆ๋Š” ์š”์†Œ๋“ค์„ ์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ๋กœ ๋ฐ˜ํ™˜
48+
- max heap์ด ์•„๋‹Œ min heap์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 
49+
"""

0 commit comments

Comments
ย (0)