๋ฌธ์ ๋งํฌ
https://leetcode.com/problems/longest-consecutive-sequence/
1์ฐจ ํ์ด
O(n)์ ๋ชฉํ๋ก ํ๋ค๊ฐ, O(nlogn)์ผ๋ก ๋น ์ ธ๋ฒ๋ฆฐ ํ์ด์ด๋ค.
์ค๊ฐ์ ์ ๋ ฌ์ ์งํํ๊ธฐ ๋๋ฌธ์ O(nlogn), ๊ทธ ํ for๋ฌธ์์ O(n) ์ด O(n) + O(nlogn) = O(nlogn)์ด ๋์๋ค.
class Solution(object):
def longestConsecutive(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
result = 0
prev = None
tempCount = 1
nums.sort()
for n in nums:
# prev ์ด ์ด๊ธฐํ๋์ด์๊ฑฐ๋ ์ ๊ฐ๊ณผ ๋์ผํ ๊ฒฝ์ฐ
if prev == None or prev == n:
prev = n
# ์ฐ์๋ ๊ฒฝ์ฐ
elif prev + 1 == n:
prev = n
tempCount += 1 # ์ฐ์์ ์ธ ๊ฒฝ์ฐ ์นด์ดํธ
else:
prev = n # ์ด๊ธฐํ
tempCount = 1
result = max(result, tempCount) # ๊ฐ ๊ฐฑ์
return result
2์ฐจ ํ์ด (ํด์ค ์ฐธ๊ณ , ์๊ฐ๋ณต์ก๋ O(n))
์๋ ์ ํฌ๋ธ๋ฅผ ์ฐธ๊ณ ํ๋ค.
https://www.youtube.com/watch?v=P6RZZMu_maU
์๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ฒฝ์ฐ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ณ์ฐํ์๋, for๋ฌธ ์์ while ๋ฌธ์ด ์๊ธฐ ๋๋ฌธ์ O(n^2) ์๋๊ฐ ์ถ๊ธด ํ๋๋ฐ,
์ด๋ฏธ set๋ก ๋ฐ๊พธ์๊ธฐ ๋๋ฌธ์ ๊ฐ์ด ์๋์ง ๊ฒ์ฌํ ๋ O(1)๋ฐ์ ๊ฑธ๋ฆฌ์ง ์๊ณ ,
์ฐ์๋ ์ซ์๋ฐฐ์ด [1,2,3,4]๊ฐ ์๋ ๊ฒฝ์ฐ 2,3,4์ผ๋๋ if์กฐ๊ฑด๋ฌธ์ ๋น ์ ธ์ ๊ฒ์ฌ๋ฅผ ์ํ๊ณ 1์ผ๋๋ง 1->2->3->4 ๋ก ๊ฒ์ฌ๋ฅผ ํ๊ธฐ ๋๋ฌธ์ ๊ฒฐ๊ณผ์ ์ผ๋ก O(n)์ ์๊ฐ๋ณต์ก๋๊ฐ ๊ฑธ๋ฆฌ๊ฒ ๋๋ค.
longest = 0
numSets = set(nums)
for n in numSets:
if n -1 in numSets:
continue;
else:
t = n
tlengh = 1
while t + 1 in numSets:
tlengh += 1
t = t + 1
longest = max(tlengh, longest)
return longest
'๐ค ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[leetcode] 167. Two Sum II - Input Array Is Sorted ํ์ด, ํด์ค (python) (1) | 2023.10.24 |
---|---|
[leetcode] 125. Valid Palindrome ํ์ด, ํด์ค (python) (1) | 2023.10.23 |
[leetcode] 36. Valid Sudoku ํ์ด, ํด์ค (python) (0) | 2023.10.18 |
[leetcode] 49. Group Anagrams ํ์ด, ํด์ค (python) (2) | 2023.10.14 |
์๊ณ ๋ฆฌ์ฆ ํ์ด์์. neetcode ์ฐธ๊ณ ํด์ leetcode ์ค๋นํ๊ธฐ (leethub) (0) | 2023.09.28 |