java获取⼀维数组中连续数字分成⼏个连续的数字数组java获取⼀维数组中连续数字分成⼏个连续的数字数组
⽐如{12,13,14,23,24,34,45,46,47,48,56} 分成【12,13,14】【23,24】【34】【45,46,47,48】【56】等
public static int[][] getContinuousNumber(int[] array)
{
int[][]arrays=new int[array.length][array.length];
//⼆维数组的i和j
int i=0;
int j=0;
//记录当前最⼤值为数组的第⼀个,减⼀是为了保证后⾯数组的第⼀个⼤于最⼤值,添加进⼊⼆维数组
int max=array[0]-1;
for(int k=0;k<array.length;k++)
{
//当不是连续数字的时候,放到下⼀个数组⾥⾯,并且把j设置为0,最⼤值为当前值-1
if(array[k]!=max+1)
{
i++;
j=0;
max=array[k]-1;
}
arrays[i][j]=array[k];
max=array[k];
j++;
}
return arrays;
}
public static void main(String[] args) {
int[] array={12,13,14,23,24,34,45,46,47,48,56};
int[][] ContinuousNumber(array);
for(int i=0;i<arrays.length;i++)
{
System.out.String(arrays[i]));
}
}
针对上⾯的情况,⼆维数组太浪费空间,所以采⽤list⽅式去获取连续的数字最⼤的数组。
这次会获取到【45,46,47,48】
public static Integer[] getMaxContinuousNumber(int[] array)
{
ArrayList<Integer> maxArrays=new ArrayList<Integer>();
ArrayList<Integer> nowArrays=new ArrayList<Integer>();
int max=array[0]-1;
for(int i=0;i<array.length;i++)
{
if(array[i]!=max+1)
{
max=array[i]-1;
nowArrays.clear();
}
nowArrays.add(array[i]);
max=array[i];java定义一维数组并赋值
if(nowArrays.size()>=maxArrays.size())
{
//maxArrays=nowArrays;这种情况是吧nowdays的地址赋值给了maxarrays的地址,这样以后只要nowarrays的地址改变,maxarrays的值也会改变 maxArrays=(ArrayList<Integer>) nowArrays.clone();
}
}
return (Integer[]) Array(new Integer[]{});
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论