当前位置: 代码迷 >> J2SE >> 如何判断long数组中的单个值是否为连续(急)求大神
  详细解决方案

如何判断long数组中的单个值是否为连续(急)求大神

热度:89   发布时间:2016-04-23 20:34:19.0
怎么判断long数组中的单个值是否为连续(急急。。)求大神
比如:10001,10002,,10003 10006,10008,10010
怎么判断那段为连续的


------解决方案--------------------
10001,10002,,10003 10006,10008,10010 这个数据是什么形式呢,在list中,还是?
定义两个变量,第一个相连的开始为止,相连的结束位置。
记住第一个的位置,然后前一个+1 等于后一个的话,说明相连,一直继续到不相连为止,那么开始位置和结束位置之间的就相连。
不相连后,从下一个重新开始。
------解决方案--------------------
long[] arr ={1001,1002,1003,1004,1006};
for (int i = 0; i < arr.length; i++) {
if (i == arr.length-1) {
return;
}
if (arr[i]+1 != arr[i+1]) {
System.out.println("不是连续的");
break;
}
}
------解决方案--------------------
10001,10002,,10003 10006,10008,10010

判断开始和结束 。

统计一共多少个数字。第一个 加上一共多少个数字 是否等于最后 的。
------解决方案--------------------
引用:
10001,10002,,10003 10006,10008,10010

判断开始和结束 。

统计一共多少个数字。第一个 加上一共多少个数字 是否等于最后 的。


你这个明显是错的吧
[1,5,5,....,5,5,10]
------解决方案--------------------
long[] longs={1,2,3,7,8,10,11,12,13,18,19};
Map<Long,Long> map=new HashMap<Long, Long>();
Long start=longs[0];
Long value=1L;
for(int i=1;i<longs.length;i++){
long curr=longs[i];
boolean flag=curr-longs[i-1]==1;
if(flag){
value++;
}
if(!flag
------解决方案--------------------
i==longs.length-1){
if(value>1)
map.put(start, value);
value=1L;
start=curr;
}
}
Set<Long> keys=map.keySet();
Iterator<Long> iterator=keys.iterator();
while(iterator.hasNext()){
Long key=iterator.next();
System.out.println("从"+key+"开始有连续"+map.get(key)+"个");
}
  相关解决方案