LeetCode: Longest Consecutive Sequence

来源:互联网 发布:csgo优化帧数参数 编辑:程序博客网 时间:2024/04/27 18:34

思路:可以先排序再开始搜索,但是时间复杂度最快要O(nlog(n))。考虑hash方法,将每个元素映射到唯一的一个hash表中,然后再搜索。对于当前元素,查看左右两边是否存在值,如果存在就继续搜索。注意,搜索过的元素可以在hash表中删除,这样能够减少运行时间,因为搜索过的就不必再次进行搜索了。刚开始我没有删除搜索过的元素,所以超时了,更正后可以Accept.

class Solution {public:    int longestConsecutive(vector<int> &num) {        unordered_map<int,int> f;int max_v(1);for(auto val: num)f[val] = 1;for(auto val: num){int left = val - 1, right = val + 1;while (f[left]){f[left] = 0;left--;}while(f[right]){f[right] = 0;right++;}max_v = max(max_v,right-left-1);}return max_v;    }};


0 0
原创粉丝点击