Skip to content

Find the longest consecutive subsequence number in an Array?

Code

import Foundation

func longestConsecutiveSubsequence(arr: [Int]) -> Int {
    var numSet = Set(arr)
    var longestStreak = 0

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

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

            longestStreak = max(longestStreak, currentStreak)
        }
    }

    return longestStreak
}

Example

// Example usage
let arr1 = [1, 9, 3, 10, 4, 20, 2]
print("Longest consecutive subsequence length for arr1: \(longestConsecutiveSubsequence(arr: arr1))")

Output

Longest consecutive subsequence length for arr1: 4
// Example usage
let arr2 = [36, 41, 56, 35, 44, 33, 34, 92, 43, 32, 42]
print("Longest consecutive subsequence length for arr2: \(longestConsecutiveSubsequence(arr: arr2))")

Output

Longest consecutive subsequence length for arr2: 5