leetcode刷题系列C++-Longest Consecutive Sequence
2016-02-17 14:12
639 查看
For example,
Given
The longest consecutive elements sequence is
Your algorithm should run in O(n) complexity.
Subscribe to see which companies asked this question
将数组里的每一个数字作为key存在哈希map中,value值用bool表示,然后从增加的方向和减少的方向分别找当前元素的最长距离,一旦该元素使用过 就将该元素的bool值设置为true 一次遍历就可以得到结果
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.
Subscribe to see which companies asked this question
/* 使用哈希表 找出最长的连续的序列 */ class Solution { public: int longestConsecutive(vector<int>& nums) { unordered_map<int,bool> used; //声明哈希map for(auto i : nums) used[i] = false;//里面的每一个数字都作为一个key 同时value为false int longest = 0; for(auto i : nums) { if(used[i]) continue; int length = 1; used[i] = true; for(int j = i + 1;used.find(j) != used.end();++j) { used[j] = true; ++length; } for(int j = i - 1; used.find(j) != used.end(); --j) { used[j] = true; ++length; } longest = max(longest,length); } return longest; } };编程步骤:
将数组里的每一个数字作为key存在哈希map中,value值用bool表示,然后从增加的方向和减少的方向分别找当前元素的最长距离,一旦该元素使用过 就将该元素的bool值设置为true 一次遍历就可以得到结果
相关文章推荐
- c++ vector赋值
- C++中的异常操作:throw&try&catch
- c++内存分配
- C++结构(structure)详解
- C语言enum枚举类型解析
- c++ char 运算
- C语言中extern的用法
- hadoop2.7伪分布式模式运行C++程序
- C++ cin.getline()函数的使用
- 线性表详解(c语言版)
- python是c语言开发的
- noip1999导弹拦截c++语言
- C/C++ 中的64位长整型
- 初学C语言常识
- 一些重要的C和C++开发框架和开源工具
- SkylineGlobe MFC C++ 开发示例代码
- C++纯虚函数
- C++异常
- C语言-09-文件操作
- C++ 公有继承,私有继承和保护继承