[LeetCode] 128. Longest Consecutive Sequence
์ ๋ ฌ๋์ง ์์ ์ซ์ ๋ฆฌ์คํธ์์ ๊ฐ์ฅ ๊ธด ์ฐ์๋ ์ซ์์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ๋ค.
์๋ฅผ๋ค์ด [100,4,200,1,3,2] ๊ฐ ์ฃผ์ด์ก์ ๋ ๊ฐ์ฅ ๊ธด ์ฐ์๋ ์ซ์๋ [1,2,3,4] ์ด๋ฏ๋ก ์ ๋ต์ 4๋ค.
class Solution:
def longestConsecutive(self, nums: List[int]) -> int:
if not nums:
return 0
nums.sort()
result = [1]
prev, cursor = nums[0], 0
for num in nums:
if num == prev:
continue
elif num == prev + 1:
result[cursor] += 1
else:
cursor += 1
result.append(1)
prev = num
return max(result)
nums
๊ฐ ๋น ๋ฆฌ์คํธ๋ฉด 0์ ๋ฐํํ๋ค.nums
๋ฅผ ์ ๋ ฌํ๋ค.nums
์์ ์ฐ์๋ ์ซ์๋ฅผ ์นด์ดํธ ํ๋ฉฐ ๊ฐ์ ์
๋ฐ์ดํธ ํ๋ค.result
์์ ๊ฐ์ฅ ํฐ ๊ฐ์ ๋ฐํํ๋ค.์ฝ๋๋ฅผ ์ง๊ณ ๋ณด๋ ๋ฆฌ์คํธ์์ ์ค๋ณต ์์๋ฅผ ์ ๊ฑฐํ๋ฉด ์กฐ๊ฑด๋ฌธ์ ํ๋ ์ค์ผ ์ ์์ ๊ฒ ๊ฐ์ ์ฝ๋๋ฅผ ์์ ํด๋ณด์๋ค.
class Solution:
def longestConsecutive(self, nums: List[int]) -> int:
if not nums:
return 0
nums = list(set(nums))
nums.sort()
result = []
prev, cursor = nums[0], -1
for num in nums:
if num == prev + 1:
result[cursor] += 1
else:
cursor += 1
result.append(1)
prev = num
return max(result)
nums
๋ฅผ set
์ผ๋ก ํ๋ณํ ํ ๋ค์ ๋ฆฌ์คํธ๋ก ๋ณํํด ์ค๋ณต ์์๋ฅผ ์ ๊ฑฐํ๋ค. ์ดํ ์ ๋ ฌํ๋ค.ย
![]() | ![]() |
---|---|
์ฒซ๋ฒ์งธ ํ์ด - ์ค๋ณต ์ ๊ฑฐ X | ๋๋ฒ์งธ ํ์ด - ์ค๋ณต ์ ๊ฑฐ O |
์คํ์๊ฐ์ ๋ฏธ์ธํ๊ฒ ์ค์์ง๋ง ๊ณต๊ฐ๋ณต์ก๋๊ฐ ์คํ๋ ค ๋์ด๋ฌ๋ค..