知识大全 最长连续序列问题
Posted 序列
篇首语:欠伸展肢体,吟咏心自愉。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 最长连续序列问题相关的知识,希望对你有一定的参考价值。
问题
给定一个未排序的整数数组 求最长的连续序列的长度 要求算法的时间复杂度在O(n)
比如对于数组[ ] 其中最长序列为[ ] 所以应该返回
public class Solution
public int longestConsecutive(int[] num)
//write your code here
解法思路
因为要求复杂度是O(n) 可以考虑使用哈希表进行查询 使用两个HashMap分别记录序列的开始值和结束值 遍历数组 如果发现比该元素大 的开始值或者比改元素小 的结束值 均进行合并工作
不多说了 看代码
private static class Sequence
int start;
int end;
int length;
public int longestConsecutive(int[] num)
int len = ;
if(num==null || (len=num length)< )
return ;
Map<Integer Sequence> start = new HashMap<Integer Sequence>();
Map<Integer Sequence> end = new HashMap<Integer Sequence>();
int maxLength = ;
for(int i= ;i<len;++i)
Sequence s = null;
int v = num[i];
if(ntainsKey(v) || ntainsKey(v))
continue;
if(ntainsKey(v+ ))
s = start remove(v+ );
s start = v;
++s length;
while(ntainsKey(s start )) //merge ends
Sequence m = end remove(s start );
start remove(m start);
s start = m start;
s length += m length;
start put(s start s);
else if(ntainsKey(v ))
s = end remove(v );
s end = v;
++s length;
while(ntainsKey(s end+ )) //merge starts
Sequence m = start remove(s end+ );
end remove(m end);
s end = m end;
s length += m length;
end put(s end s);
else
s = new Sequence();
s start = s end = v;
s length = ;
start put(v s);
end put(v s);
//System out println(i+ +v+ seqence: +s start+ / +s end+ / +s length);
if(maxLength<s length)
maxLength = s length;
return maxLength;
cha138/Article/program/Java/hx/201311/26932相关参考
判断一个序列是否为出栈序列随着n的变大出栈序列总数越来越多由文献[]和[]可知出栈序列的求解问题是一个NP问题所以判断一个序列是否为一个出栈序列更为重要在文献[]的传统算法中根据栈的定理[]判断某一序
第四章串 串及其运算 串的基本概念 串是由零个或多个字符组成的有限序列; 包含字符的个数称串的长度;长度为零的串称空串;由一个或多个空格组成的串称空白串; 串中任意个连续字符组成的子序列
第四章串 串是零个或多个字符组成的有限序列 ·空串是指长度为零的串也就是串中不包含任何字符(结点) ·空白串指串中包含一个或多个空格字符的串 ·在一个串中任意个连续字符组成的子序列称为该串
牙齿问题其实您到正规的牙科机构尽早做全口牙齿的检查,确定一个序列治疗方案,配合您的牙医一步步进行,所有的问题就解决了。您不用这么纠结,牙齿的问题是要具体治疗的,不能拖时间把小问题变成大问题,到最后牙齿
JSON序列化与反序列化 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!以下是对JSON序列化与反序
棉花能不能实现稳产高产和持续生产?从国欣种业的科技园区看,可以得出肯定的答案。坐落在河间市城南的1千多亩科技园区已连续植棉10年以上,最长的已连作20年。至今保持住较好的长势和较高的产量水平,基本上控
棉花能不能实现稳产高产和持续生产?从国欣种业的科技园区看,可以得出肯定的答案。坐落在河间市城南的1千多亩科技园区已连续植棉10年以上,最长的已连作20年。至今保持住较好的长势和较高的产量水平,基本上控
.算法模拟(分问题各分问题占分) 设待排序的记录共个排序码分别为 ()用直接插入排序试以排序码序列的变化描述形式说明排序全过程(动态过程)要求按递减顺序排序 ()用直接选择排序试以排序码序列
//datatable序列化 publicstringgetSendDetailQuery(D
试述组成染色体DNA的三种功能元件分别是什么并论述其主要功能
a.自主复制DNA序列:DNA复制的起点确保chr在细胞膜周期中能够自我复制,为顺式作用元件的一种,从而保护chr在世代传递中具有稳定性和连续性。 b.着丝粒DNA序列:与染色体的分离有关,是两个相