帮忙写个方法
有一数组里面存放的是有序的数字比如:
[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;
}
}
------解决方案--------------------
楼主这个方法最好别用。
你把它分成多个数组再去处理,这个过程效率很低啊。分开能做的事情,不分开也能做啊。
不如想想不分该怎么做吧。
如果你纯粹就是想把它分成多个数组,不做其他操作,那我就不说什么了。
[解决办法]
LZ,正常来说你这数据应该是在后台查询吧
直接用sql语句查询结果,返回3行记录,分别为连续的最大,最小值不行吗?