首页 > 代码库 > Leetcode#128 Longest Consecutive Sequence
Leetcode#128 Longest Consecutive Sequence
原题地址
1. 把所有元素都塞到集合里
2. 遍历所有元素,对于每个元素,如果集合里没有,就算了,如果有的话,就向左向右拓展,找到最长的连续范围,同时在每次找的时候都把找到的删掉。这样做保证了同样的连续序列只会被遍历一次,从而保证时间复杂度。
时间复杂度O(n)
代码:
1 int longestConsecutive(vector<int> &num) { 2 set<int> record; 3 int maxLength = 0; 4 5 for (auto n : num) 6 record.insert(n); 7 8 while (!record.empty()) { 9 int len = 1;10 int n = *(record.begin());11 record.erase(n);12 for (int i = n - 1; record.find(i) != record.end(); i--) {13 len++;14 record.erase(i);15 }16 for (int i = n + 1; record.find(i) != record.end(); i++) {17 len++;18 record.erase(i);19 }20 maxLength = max(maxLength, len);21 }22 23 return maxLength;
Leetcode#128 Longest Consecutive Sequence
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。