有一组数字,要求对这组数字进行分组,规则:找出这组数字中连续的数字,作为一组,如果是单独的数字就单独作为单独的一组.最终将这组数据分成多个组.要求写出通用算法。
举例说明:如1,2,3,7,9,10,11,12,15这组数字,共有4组(第一组:1,2,3为连续的数字.第二组:7为一个独立的数字,第三组:10,11,12为连续的数字.第四组15为一个独立的数字).

解决方案 »

  1.   

    import java.util.*;
    public class Test {
    public static void main(String[] args) {
    int[]data = {1,2,3,7,9,10,11,12,15};
    ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>();
    ArrayList<Integer> group;
    for(int i=0; i<data.length; i++){
     group = new ArrayList<Integer>();
     group.add(data[i]);
     while(i+1<data.length && data[i+1]==data[i]+1){
     group.add(data[++i]);
     }
     list.add(group);
    }

    System.out.println(list);

    }
    }
      

  2.   

    believefym(feng),有没有1.4的写法呢?我的 jdk是1.4的,不支持,无法运行.有没有其他办法呢?谢谢.
      

  3.   

    import java.util.*;
    public class Test {
    public static void main(String[] args) {
    int[]data = {1,2,3,7,9,10,11,12,15,16};
    ArrayList/*<ArrayList<Integer>>*/ list = new ArrayList/*<ArrayList<Integer>>*/();
    ArrayList/*<Integer>*/ group;
    for(int i=0; i<data.length; i++){
     group = new ArrayList<Integer>();
     group.add(data[i]);
     while(i+1<data.length && data[i+1]==data[i]+1){
     group.add(data[++i]);
     }
     list.add(group);
    }

    System.out.println(list);
    }
    }
      

  4.   

    import java.util.*;
    public class Test {
    public static void main(String[] args) {
    int[]data = {1,2,3,7,9,10,11,12,15,16};
    ArrayList/*<ArrayList<Integer>>*/ list = new ArrayList/*<ArrayList<Integer>>*/();
    ArrayList/*<Integer>*/ group;
    for(int i=0; i<data.length; i++){
     group = new ArrayList/*<Integer>*/();
     group.add(data[i]);
     while(i+1<data.length && data[i+1]==data[i]+1){
     group.add(data[++i]);
     }
     list.add(group);
    }

    System.out.println(list);
    }
    }
      

  5.   

    import java.util.*;
    public class Cbase {
        public static void main(String[] arg) {
         int a[]={1,2,3,7,9,10,11,12,15};
         HashSet all=new HashSet(), group=new HashSet();
         all.add(group);
         boolean newflag=false;
         for(int i=0; i<a.length; i++) {
         if(newflag) {
         group=new HashSet();
         all.add(group);
         newflag=false;
         }
         group.add(a[i]);
         if(i<a.length-1 && a[i+1]-a[i]!=1) newflag=true;
         }
         Iterator itAll=all.iterator();
         while(itAll.hasNext()) {
         group=(HashSet)itAll.next();
         Iterator itG=group.iterator();
         while(itG.hasNext()) {
         System.out.print(itG.next()+"   ");
         }
         System.out.println();
         }
        }
    }
      

  6.   

    把那些<>里面的内容都去掉判断之前,最后先对data数组,排序
      

  7.   

    believefym(feng),JianZhiZG(健之)两位的算法都是正确的。谢谢。
      

  8.   

    import java.util.ArrayList;
    public class one1 { public static void main(String[] args)
    {
    int[] a={1,2,3,5,7,8,5,9,10};
    ArrayList aa=new ArrayList();
    System.out.println(a.length);



    for(int j=0;j<a.length;j++)
    {   ArrayList a1=new ArrayList();
        a1.add(new Integer(a[j]));
    while(j+1<a.length&&a[j]+1==a[j+1])
    {
    a1.add(new Integer(a[j+1]));
    j++;
    }
    aa.add(a1);
    }

    for(int j=0;j<aa.size();j++)
    {
    ArrayList a2=(ArrayList) aa.get(j);
    for(int m=0;m<a2.size();m++)
    {
    System.out.print((Integer)a2.get(m));
    }
    System.out.println();
    }
    }
    }