[Algorithm] LeetCode - Longest Consecutive Sequence

2025. 5. 6. 12:20· → Problems
목차
  1. 📠 문제
  2. 💡 풀이

📠 문제

  • Longest Consecutive Sequence
  • 난이도: Medium
  • 정수 배열이 주어질 때, 정렬하지 않고 가장 긴 연속 수열의 길이를 구하는 문제이다.
Input: nums = [100,4,200,1,3,2]
Output: 4
Explanation: The longest consecutive elements sequence is [1, 2, 3, 4]. Therefore its length is 4.

💡 풀이

처음에 오름차순, 내림차순이 생각나기 때문에 정렬을 할 수 있는데 정렬을 하는 순간 O(nlogn)이 되어버린다. 이 문제의 핵심은 O(n)으로 푸는 것이다. (문제에서 You must write an algorithm that runs in O(n) time. 라고 나와있다)

 

생각해보면 단순하다. 왜냐하면 우선 내 맘대로 배열을 배치할 수 있으니까 순서는 상관없다 연속되는지만 파악하면 된다. 결국 현재 숫자에서 1을 더한 숫자가 있는지 없는지를 알아내면 된다! 하지만 배열이라면 숫자를 찾는데 O(n)의 시간복잡도가 추가되기 때문에 Swift의 경우 Set으로 만들어서 contains(_ :)를 활용하여 확인해주면 된다.

func longestConsecutive(_ nums: [Int]) -> Int {
    let numSet = Set(nums)
    var result = 0

    for num in numSet {
        if !numSet.contains(num - 1) {
            var currentNum = num
            var currentStreak = 1

            while numSet.contains(currentNum + 1) {
                currentNum += 1
                currentStreak += 1
            }

            result = max(result, currentStreak)
        }
    }

    return result
}

'→ Problems' 카테고리의 다른 글

[Algorithm] LeetCode - Clone Graph  (0) 2025.05.07
[Algorithm] LeetCode - Longest Palindromic Substring  (0) 2025.05.06
[Algorithm] 프로그래머스 - 뒤에 있는 큰 수  (0) 2025.04.06
[Algorithm] 백준 - 16639번 괄호 추가하기3  (0) 2025.03.28
[Algorithm] 백준 - 16638번 괄호 추가하기2 (Swift)  (0) 2025.03.27
  1. 📠 문제
  2. 💡 풀이
'→ Problems' 카테고리의 다른 글
  • [Algorithm] LeetCode - Clone Graph
  • [Algorithm] LeetCode - Longest Palindromic Substring
  • [Algorithm] 프로그래머스 - 뒤에 있는 큰 수
  • [Algorithm] 백준 - 16639번 괄호 추가하기3
Swift librarian
Swift librarian
Swift librarian
Swift Library
Swift librarian
전체
오늘
어제
  • 분류 전체보기 (231)
    • 📺 Programming (5)
    • → Architecture (2)
    • → Design Pattern (0)
    • → Computer Science (15)
    • ⚙️ Algorithm (0)
    • → 알고리즘 관련 (22)
    • → Problems (104)
    • 🚀 Project (0)
    • → 알쏭달쏭 (0)
    • → Shook (2)
    • → Solver (8)
    • → Taster (7)
    • → Outline (4)
    • → Pointer (2)
    • → Guesser (3)
    • 🦜 Swift (2)
    • → Swift Archive (12)
    • → Swift Study (12)
    • → Xcode (6)
    • 🧰 Framework (0)
    • → Foundation (1)
    • → UIKit (2)
    • → SwiftUI (3)
    • → CoreData (2)
    • → MapKit (1)
    • → CoreHaptic (1)
    • → User Notification (1)
    • → StoreKit (2)
    • 🏛️ Library (0)
    • → TCA (0)
    • 🐈‍⬛ Git (8)
    • → Git의 원리 (2)
    • → Git 심화 (1)
    • 📦 Other (1)
    • 👦🏻 Log (0)

최근 글

hELLO · Designed By 정상우.v4.2.2
Swift librarian
[Algorithm] LeetCode - Longest Consecutive Sequence
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.