2.1.6 —线性表—Longest Consecutive Sequence

来源:互联网 发布:水文地质钻孔数据 编辑:程序博客网 时间:2024/06/08 18:59
描述
Given an unsorted array of integers, find the length of the longest consecutive elements sequence.

For example, Given[100, 4, 200, 1, 3, 2], e longest consecutive elements sequence is[1,2, 3, 4]

Return its length: 4.Your algorithm should run in O(n)complexity.

#include<iostream>#include<vector>#include<unordered_map>using namespace std;int longestSequence(const vector<int>&num){unordered_map<int, bool> used;for (auto i : num) used[i] = false;int longest = 0;for (auto i : num){if (used[i])continue;used[i]=true;int templongest = 1;for (int j = i + 1; used.find(j) != used.end(); j++){used[j] = true;templongest++;}for (int j = i - 1; used.find(j) != used.end(); j--){used[j] = true;templongest++;}longest = longest > templongest ? longest : templongest;}return longest;}int main(){const int n=10;int a[n] = { 1, 8, 9, 2, 3, -1, 0, 6, 8, 7 };vector<int>num(a, a + n);int longest = longestSequence(num);cout << "最长连续子序列:" << longest << endl;}


原创粉丝点击