给一个数组,找出数组中最长的连续数列的长度

本题源自LeetCode

------------------------------------------------------------------------------------

hash表来解决这个问题,先初始化一个hash表, 存储所有数组元素, 然后遍历这个数组, 对找到的数组元素, 去搜索其相连的上下两个元素是否在hash表中, 如果在, 删除相应元素并增加此次查找的数据长度, 如果不在, 从下一个元素出发查找。已经访问过的元素记录下来或者删除,

    int longestConsecutive(vector &num) {
        unordered_set myset(num.begin(),num.end());
        int res=1;
        for(int current:num){
            if(myset.find(current)!=myset.end()){
                myset.erase(current);
                int post=current+1;
                int pre=current-1;
                while(myset.find(pre)!=myset.end()){
                    myset.erase(pre);
                    pre--;
                }
                while(myset.find(post)!=myset.end()){
                    myset.erase(post);
                    post++;
                }
                res=max(res,post-pre-1);
            }
        }
        return res;
    }


你可能感兴趣的:(C++,leetcode,算法)