【Leetcode長征系列】Longest Consecutive Sequence

原題:

Given an unsorted array of integers, find the length of the longest consecutive elements sequence.

For example,
Given [100, 4, 200, 1, 3, 2],
The longest consecutive elements sequence is [1, 2, 3, 4]. Return its length: 4.

Your algorithm should run in O(n) complexity.

思路:

先對隊列排序。從小到大搜索,如果前後相差1則tmp++最後找到最大的tmp返回。需要注意的是1. 考慮到如果有相同元素的情況。2. 考慮到單個字符的長度算1不算0,所以tmp初始值要設置爲1!

代碼:

class Solution {
public:
    int longestConsecutive(vector<int> &num) {
        if (num.empty()) return 0;
        if(num.size()==1) return 1;
        sort(num.begin(),num.end());
        int max = 1, tmp = 1;
        
        for (int i = 1; i<num.size(); i++){
            if(num[i]-num[i-1]==1) tmp++;
            else if(num[i]==num[i-1]) ;
            else {
                max = max>tmp?max:tmp;
                tmp = 1;
            }
            if(i==num.size()-1) max = max>tmp?max:tmp;
        }
        
        return max;
    }
};


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章