解决方案 »

  1.   

    10001,10002,,10003 10006,10008,10010 这个数据是什么形式呢,在list中,还是?
    定义两个变量,第一个相连的开始为止,相连的结束位置。
    记住第一个的位置,然后前一个+1 等于后一个的话,说明相连,一直继续到不相连为止,那么开始位置和结束位置之间的就相连。
    不相连后,从下一个重新开始。
      

  2.   

    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;
    }
    }
      

  3.   

    那就按照1楼说的方法,遍历吧。两个变量记录开始和技术位置。
    每组结束时,可将这组值放进一个map中,map记录开始位置(key)和连续长度(value)就可以了。
    最后看map中元素数量,就知道有多少组连续的值了,想知道最长连续多长,找map中value最大的就是了。
    这里就不给你写代码了,自己写代码吧。
      

  4.   

    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)+"个");
    }