Longest Consecutive Sequence

用set,注意當遍歷set後,要把對應的值從set中清除掉,這樣會大大減小複雜度。

unordered_set時間會更快,後面瞭解下set 和 unordered_set的區別。


class Solution {
public:
    set<int>v;
    int getLen(int x)
    {
        int len = 1;
        int start, end;
        start = end = x;
        v.erase(x);
        while(v.find(--start) != v.end())
        {
            v.erase(start);
            len ++ ;
        }
        while(v.find(++end) != v.end())
        {
            v.erase(end);
            len ++ ;
        }
        return len;
    }
    int longestConsecutive(vector<int> &num) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        v.clear();
        if(num.size() == 0) return 0;
        for(int i = 0; i < num.size(); ++ i) v.insert(num[i]);
        int ans = 0, current_len = 0; 
        for(int i = 0; i < num.size(); ++ i)
        {
            if(v.find(num[i]) != v.end())
            {
                current_len = getLen(num[i]);
                if(current_len > ans) ans = current_len;
            }
        }
		return ans;
    }
};


發佈了60 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章