最长连续序列(算法)
2015-09-03 09:38
411 查看
给出一个无序的整形数组,找出最长连续元素的长度。时间复杂度要求在线性时间内。
eg: 输入{8,1,9,3,2,4},那么其最长连续序列是{1,2,3,4},即输出长度为4.
eg: 输入{8,1,9,3,2,4},那么其最长连续序列是{1,2,3,4},即输出长度为4.
public int findLongestConsequence(int [] A) { HashMap<Integer,Integer> map = new HashMap<Integer,Integer>(); int max = 1; for(int i : A) { if(map.containKey(i) ) continue; map.put(i,1); if(map.containKey(i - 1)) max = Math.max(max,merge(map,i - 1,i); if(map.containKey(i + 1)) max = Math.max(max,merge(map,i, i + 1)); } return max; } private int merge(HashMap<Integer,Integer> map,int left,int right) { int upper = right + map.get(right) - 1; int lower = left - map.get(left) + 1; int len = upper - lower + 1; map.put(upper,len); map.put(lower,len); return len; }
相关文章推荐
- 黄聪:《跟黄聪学WordPress主题开发》
- Java 基础笔记之二 变量和常量有什么区别
- uva 11137 - Ingenuous Cubrency 立方数之和 递推
- Struts2 概述:Action中获取Request
- django_学习笔记0903
- 使用Eclipse中提供的Refactor(重构)工具
- http--响应请求状态码
- [LeetCode#116]Fraction to Recurring Decimal
- Python
- 8月30日 第六次课作业 作业一
- 解决Studio运行出现Failure [INSTALL_FAILED_OLDER_SDK]
- 70
- 互联网思维PK大数据思维
- 使用NFSv3将HDFS挂载到本地
- hdu 5038 Grade(简单模拟求解)2014 ACM/ICPC Asia Regional 北京 Online
- Android(java)学习笔记205:网易新闻RSS客户端应用编写逻辑过程
- HDU 1201 18岁生日
- Windows Server 2003 R2 64位简体中文版下载
- i++是否原子操作?并解释为什么?
- Java与持久相关的锁总结