Longest Consecutive Sequence
2020-07-14 06:23
344 查看
题目描述
2.1.6 Longest Consecutive Sequence
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
题目分析
解题思路
无序数列中最长连续的数 长度,时间复杂度要求为O(n) 1、先排序 时间复杂度为 O(nlogn) 这个时间复杂度是怎么的出来的 2、使用哈希表 unordered_map<int, bool> used 记录每个元素是否使用,对没元素扩散查找,直到不连续记录下长度
代码实现
/* date:2018/3/06 16:59 */ #include <vector> #include <unordered_map> #include <algorithm> using std::unordered_map; using std::vector; using std::max; int arr[] = {1,2,3,8,4,10,6,7}; int arr_len = sizeof(arr)/sizeof(int); vector<int> nums(arr,arr+arr_len); int longestConsecutive(vector<int>&nums) { int len = 0; int result = 0; //初始化哈希表 unordered_map<int,bool> used; for(int i=0; i<nums.size(); i++) used[nums[i]] = false; //进行遍历 for (int i=0; i<nums.size(); i++) { int value = nums[i]; unordered_map<int,bool>::iterator it = used.find(value); while (it!=used.end() && !it->second ) { len++; value++; it->second = true; it = used.find(value); } printf("begin [%d] to",len ? value-1 : value); value = nums[i]-1; it = used.find(value); while (it!=used.end() && !it->second ) { len++; value--; it->second = true; it = used.find(value); } printf("end [%d],len[%d]\n",value+1,len); result = max(len,result); len = 0; } return result; }
参考
https://www.geek-share.com/detail/2670132920.html //map hashmap unordered_map
https://www.geek-share.com/detail/2681020403.html
http://www.cplusplus.com/reference/unordered_map/unordered_map/find/
相关文章推荐
- [LeetCode 128] - 最长连续序列(Longest Consecutive Sequence)
- Longest Consecutive Sequence
- leetcode-128-Longest Consecutive Sequence 哈希表
- Longest Consecutive Sequence
- [LeetCode] longest consecutive sequence
- Longest Consecutive Sequence问题
- Longest Consecutive Sequence
- 128. Longest Consecutive Sequence
- LeetCode----Longest Consecutive Sequence
- LeetCode Longest Consecutive Sequence
- LeetCode:Longest Consecutive Sequence
- [LeetCode] Longest Consecutive Sequence
- LeetCode:Longest Consecutive Sequence
- [LeetCode]Binary Tree Longest Consecutive Sequence
- Leetcode213: Longest Consecutive Sequence
- [LintCode] 619 Binary Tree Longest Consecutive Sequence III 解题报告
- leetcode:Longest Consecutive Sequence
- [LeetCode] Longest Consecutive Sequence
- Leetcode Longest Consecutive Sequence
- LeetCode "Longest Consecutive Sequence"