Leetcode-Longest Consecutive Sequence
来源:互联网 发布:黄河商品交易软件 编辑:程序博客网 时间:2024/06/06 12:28
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.
Version 1
class Solution {public: int longestConsecutive(vector<int>& nums) { unordered_set<int> mset, tmpset; for (auto i : nums) { mset.insert(i); } int res = 0, tint = 0; for (auto i : nums) { if (tmpset.find(i) != tmpset.end()) continue; tmpset.insert(i); tint = 1; int j = i-1; while (mset.find(j) != mset.end()) { tmpset.insert(j); j--; tint++; } j = i+1; while (mset.find(j) != mset.end()) { tmpset.insert(j); j++; tint++; } if (res < tint) res = tint; } return res; }};
Version 2
use a hash map to store boundary information of consecutive sequence for each element; there 4 cases when a new element i reached:
neither i+1 nor i-1 has been seen: m[i]=1;
both i+1 and i-1 have been seen: extend m[i+m[i+1]] and m[i-m[i-1]] to each other;
only i+1 has been seen: extend m[i+m[i+1]] and m[i] to each other;
only i-1 has been seen: extend m[i-m[i-1]] and m[i] to each other.
int longestConsecutive(vector<int> &num) { unordered_map<int, int> m; int r = 0; for (int i : num) { if (m[i]) continue; r = max(r, m[i] = m[i + m[i + 1]] = m[i - m[i - 1]] = m[i + 1] + m[i - 1] + 1); } return r;}
0 0
- Leetcode : Longest Consecutive Sequence
- [Leetcode] Longest Consecutive Sequence
- [leetcode] longest consecutive sequence
- 【leetcode】Longest Consecutive Sequence
- LeetCode - Longest Consecutive Sequence
- [LeetCode]Longest Consecutive Sequence
- leetcode:Longest Consecutive Sequence
- [Leetcode]Longest Consecutive Sequence
- [leetcode]Longest Consecutive Sequence
- leetcode Longest Consecutive Sequence
- Leetcode: Longest Consecutive Sequence
- LeetCode:Longest Consecutive Sequence
- [leetcode] Longest Consecutive Sequence
- LeetCode-Longest Consecutive Sequence
- LeetCode - Longest Consecutive Sequence
- [LeetCode] longest consecutive sequence
- LeetCode | Longest Consecutive Sequence
- [leetcode]Longest Consecutive Sequence
- Android Study 之分分钟让你玩转EditText右下角实时显示输入字数
- Linux--RH134---unit 3 系统延迟及定时机制
- Hibernate关系映射文件一对多,多对一配置
- 头文件、库文件、静态库、动态库
- QtCreator: No valid kits found
- Leetcode-Longest Consecutive Sequence
- 多线程之NSThread
- Hibernate 注解使用
- 【Spring实战】----解析Spring AOP
- bootstrap之tab.js分析
- 【Spring实战】----Spring事务管理配置解析
- Spring事务之二(JDBC连接数据库的四种方式)
- tranwrd函数用法详解
- DedeCMS V5.7 SP2 去掉广告方法