LeetCode 128 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.
方法一:set实现
使用一个集合set存入所有的数字,然后遍历数组中的每个数字,如果其在集合中存在,那么将其移除,然后分别用两个变量pre和next算出其前一个数跟后一个数,然后在集合中循环查找,如果pre在集合中,那么将pre移除集合,然后pre再自减1,直至pre不在集合之中,对next采用同样的方法,那么next-pre-1就是当前数字的最长连续序列,更新res即可。
 class Solution {
 public:
     int longestConsecutive(vector<int>& nums) {
         if(nums.size()==||nums.empty())
             return ;
         unordered_set<int> s(nums.begin(),nums.end());
         int res=;
         for(int val:nums)
         {
             if(!s.count(val))
                 continue;
             s.erase(val);
             int pre=val-,next=val+;
             while(s.count(pre))
                 s.erase(pre--);
             while(s.count(next))
                 s.erase(next++);
             res=max(res,next-pre-);
         }
         return res;
     }
 };
方法二:map实现
刚开始哈希表为空,然后遍历所有数字,如果该数字不在哈希表中,那么我们分别看其左右两个数字是否在哈希表中,如果在,则返回其哈希表中映射值,若不在,则返回0,然后我们将left+right+1作为当前数字的映射,并更新res结果,然后更新d-left和d-right的映射值。
 class Solution {
 public:
     int longestConsecutive(vector<int>& nums) {
         if(nums.size()==||nums.empty())
             return ;
         unordered_map<int,int> m;
         int res=;
         for(int val:nums)
         {
             if(!m.count(val))
             {
                 int left=m.count(val-)?m[val-]:;
                 int right=m.count(val+)?m[val+]:;
                 int sum=left+right+;
                 res=max(res,sum);
                 m[val]=sum;
                 m[val-left]=sum;
                 m[val+right]=sum;
             }
         }
         return res;
     }
 };
LeetCode 128 Longest Consecutive Sequence 一个无序整数数组中找到最长连续序列的更多相关文章
- 128 Longest Consecutive Sequence 一个无序整数数组中找到最长连续序列
		给定一个未排序的整数数组,找出最长连续序列的长度.例如,给出 [100, 4, 200, 1, 3, 2],这个最长的连续序列是 [1, 2, 3, 4].返回所求长度: 4.要求你的算法复杂度为 O ... 
- [LeetCode] 128. Longest Consecutive Sequence 解题思路
		Given an unsorted array of integers, find the length of the longest consecutive elements sequence. F ... 
- [LeetCode] 128. Longest Consecutive Sequence 求最长连续序列
		Given an unsorted array of integers, find the length of the longest consecutive elements sequence. F ... 
- [leetcode]128. Longest Consecutive Sequence最长连续序列
		Given an unsorted array of integers, find the length of the longest consecutive elements sequence. Y ... 
- Java for LeetCode 128 Longest Consecutive Sequence
		Given an unsorted array of integers, find the length of the longest consecutive elements sequence. F ... 
- leetcode 128. Longest Consecutive Sequence ----- java
		Given an unsorted array of integers, find the length of the longest consecutive elements sequence. F ... 
- Leetcode 128. Longest Consecutive Sequence (union find)
		Given an unsorted array of integers, find the length of the longest consecutive elements sequence. Y ... 
- Java算法-------无序数组中的最长连续序列---------leetcode128
		Given an unsorted array of integers, find the length of the longest consecutive elements sequence. F ... 
- Leetcode#128 Longest Consecutive Sequence
		原题地址 1. 把所有元素都塞到集合里2. 遍历所有元素,对于每个元素,如果集合里没有,就算了,如果有的话,就向左向右拓展,找到最长的连续范围,同时在每次找的时候都把找到的删掉.这样做保证了同样的连续 ... 
随机推荐
- android开发  解析服务器端xml文件数据存储到android客户端SQLite数据库
			以下面xml文件为例对其解析(假设此xml就在服务器端Server项目下的servlet包下的MenuServlet文件的输出流中): <?xml version="1.0" ... 
- MySQL读取各个my.cnf配置文件的先后顺序是:
			/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf 其他自定义路径下的my.cnf,例如:/data/mysql/y ... 
- Poj 2403 Hay Points(Map)
			一.题目大意 实现一个工资计算系统.工资的计算规则是:首先,给定一些关键字和对应的价值,这个相对于字典.然后给出的是求职者的描述,如果这个描述中包含关键字则加上对应的价值,总得价值就是这个求职者的工资 ... 
- netty中的引导Bootstrap客户端
			一.Bootstrap Bootstrap 是 Netty 提供的一个便利的工厂类, 我们可以通过它来完成 Netty 的客户端或服务器端的 Netty 初始化.下面我以 Netty 源码例子中的 E ... 
- HTTP之首部
			http报文包括起始行.首部和主体. HTTP请求/响应起始行 请求组成: 方法 + 请求URL + HTTP版本 响应组成: HTTP版本 + 数字状态码 + 描述状态的原因短语 HT ... 
- 18_andriod常用布局&内容回顾
			线性布局: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:androi ... 
- Linux中发布项目的一些命令笔记
			记一下,Linux中发布项目的一些难记的命令: .安装jdk a.检测是否安装了jdk 运行java -version b.若有需要将其卸载 c.查看安装那些jdk rpm -qa | grep ja ... 
- mysql修改查询出来的时间格式
			var d = new Date(rss.createtime); let youWant = d.getFullYear() + ) + '-' + d.getDate() + ' ' + d.ge ... 
- 树莓派 Learning 001 装机 ---之 1 安装NOOBS系统
			树莓派安装NOOBS系统 (使用的树莓派板卡型号:Raspberry Pi 2 Model B V1.1)(板卡的型号在板子正面的丝印层上印着,你可以看到.) RASPBERRY PI 2 MODEL ... 
- Hive 进阶
			两种情况下不走map-reduce: 1. where ds >' ' //ds 是partition 2. select * from table //后面没有查询条件,什么都没有 1.建表 ... 
