您的位置:首页 > 产品设计 > UI/UE

leetcode Longest Consecutive Sequence

2017-12-24 09:40 363 查看

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.

解题方法:

维护一个set,首先将vector中的所有元素插到set中。然后遍历vector中的所有元素,如果在set中能找到,则接着找比这个元素连续小的数,直到找不到为止,同时页找比这个元素连续大的数,直到找不到为止。这样这个与这个元素构成连续序列的大小就是最大的减最小的减一。在找到连续序列的最大值就好了。

代码详情:

class Solution {

public:

    int longestConsecutive(vector<int>& nums) {

        int result = 0;

        set<int> s;

        for (int i = 0; i < nums.size(); i++) {

            s.insert(nums[i]);

        }

        for (int i = 0; i < nums.size(); i++) {

            if (!s.count(nums[i])) continue;

            s.erase(nums[i]);

            int pre = nums[i]-1;

            int next = nums[i]+1;

            while (s.count(pre)) {

                s.erase(pre);

                pre--;

            }

             while (s.count(next)) {

                s.erase(next);

                next++;

            }

            result = max(result, next-pre-1);

        }

        return result;

    }

    

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: