帮忙写个方法
有一数组里面存放的是有序的数字比如:
[1,2,4,5,7,8,9]
要求写一个方法把连续的数字放到一个数组中。
得到的结果为:
[1,2]
[4,5]
[7,8,9]
[解决办法]
public static int[][] subArray(int[] a){
int len = a.length;
int outer =0, inner =0;
int[][] abc = new int[len][];
int[] temp = new int[len];
int cate=0;
while(outer< len)
{
int i=0;
inner = outer;
temp[i++]= a[inner];
while((a[inner+1]- a[inner] ==1) && (inner+1)< len)
{
temp[i++] = a[inner+1];
inner++;
}
abc[cate]= new int[i];
cate++;
outer = inner +1;
}
return abc;
}
[解决办法]
1楼代码运行时报越界,改了下:
import java.util.Arrays;
public class SplitArraysCsdn
{
public static void main(String[] args)
{
int[] in={1,2,4,5,7,8,9};
int[][] out=subArray(in);
for(int[] b:out)//显示结果
{
System.out.println(Arrays.toString(b));
}
}
//输入数组必须由小到大排序。
//
public static int[][] subArray(int[] a)
{
int len = a.length;
int outer =0, inner =0;
int[][] abc = new int[len][];
int[] temp = new int[len];
int cate=0;
while(outer< len)
{
int i=0;
inner = outer;
temp[i++]= a[inner];
while(((inner+1)< len)&&(a[inner+1]- a[inner] ==1))//换了一下顺序
{
temp[i++] = a[inner+1];
inner++;
}
//abc[cate]= new int[i];
abc[cate]= Arrays.copyOf(temp,i);//去掉无用元素后放入二唯数组。
cate++;
outer = inner +1;
}
abc=Arrays.copyOf(abc,cate);//去掉多余的元素。
return abc;
}
}