LeetCode之Longest Consecutive Sequence

来源:互联网 发布:python 宝典 高清 pdf 编辑:程序博客网 时间:2024/05/17 23:57
/*由于数组是无序的,要在O(n)内求解问题,自然想到hash表。方法参考自:https://github.com/soulmachine/leetcode*/class Solution {public:int longestConsecutive(vector<int> &num) {unordered_map<int, bool> has_appeared;//用来记录对应的数字是否出现过for(int i = 0; i < num.size(); ++i) has_appeared[num[i]] = false;int length(0);for(int i = 0; i < num.size(); ++i){if(!has_appeared[num[i]]){//当前的数字还没加入int len(1);has_appeared[num[i]] = true;for(int j = num[i] + 1; has_appeared.find(j) != has_appeared.end(); ++j){//统计右边的连续数字has_appeared[j] = true;++len;}for(int j = num[i] - 1; has_appeared.find(j) != has_appeared.end(); --j){//统计左边出现的连续数字has_appeared[j] = true;++len;}length = std::max(length, len);}}return length;}};

0 0
原创粉丝点击