Longest Consecutive Sequence

ㅋㅋ·2022년 7월 5일
0

알고리즘-leetcode

목록 보기
23/135

정수형 벡터 데이터에서 연속되는(1 차이) 숫자들의 가장 긴 길이를 구하면 된다.

그리고 그 때 알고리즘은 오직 O(n)의 시간복잡도를 가져야 한다는 제한 사항이 있다.

class Solution {
public:
    
    
    int longestConsecutive(vector<int>& nums) {
        
        unordered_set<int> hashTable(nums.begin(), nums.end());
        
        int maxLength{0};
        for (int &num : nums)
        {
            if (hashTable.count(num) == 0)
            {
                continue;
            }
            
            int left{num - 1};
            while (0 < hashTable.count(left))
            {
                hashTable.erase(left);
                left--;
            }
            
            int right{num + 1};
            while (0 < hashTable.count(right))
            {
                hashTable.erase(right);
                right++;
            }
            
            hashTable.erase(num);

            maxLength = max(maxLength, right - left - 1);
        }
        
        return maxLength;
    }
};

0개의 댓글