[LeetCode] 128. Longest Consecutive Sequence

Sungwooยท2024๋…„ 11์›” 4์ผ
0

Algorithm

๋ชฉ๋ก ๋ณด๊ธฐ
8/43
post-thumbnail

๐Ÿ“•๋ฌธ์ œ

[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

์‹คํ–‰์‹œ๊ฐ„์€ ๋ฏธ์„ธํ•˜๊ฒŒ ์ค„์—ˆ์ง€๋งŒ ๊ณต๊ฐ„๋ณต์žก๋„๊ฐ€ ์˜คํžˆ๋ ค ๋Š˜์–ด๋‚ฌ๋‹ค..

0๊ฐœ์˜ ๋Œ“๊ธ€