package com.hdx.test;
import java.util.ArrayList;
import java.util.List;
公共课堂连墟{
publicstaticvoidmain (字符串[ ] args ) {
int [ ] arr=new int [ ] { 1,2,5,6,8,8,8,9,9,9,3,4,4 };
int [ ] arr1=new int [ ] { 1,2,3,4,5,6,1,9 };
int [ ] arr2=new int [ ] { 2,3,9 };
//system.out.println (is series (arr,1,10 ).toString ) );
//system.out.println (is series (arr 1,1,15 ).toString ) );
//system.out.println (is repeat (arr ).toString ) );
system.out.println (is series (arr 2,2,15 ).toString ) );
}
//*
获取数组中的重复项
* @param num
* @return
*/
私有身份列表repeat (int [ ] num )。
List r=new ArrayList (;
//循环数组中的所有数据
for(intI=0; i num.length; I ) {
if(Inum.Length-1 ) {
if(num[I]==num[I1] ) {
//当数据处于循环恢复时
r.add(num[I];
}
}
}
返回r;
}
//*
获取数组中央的连续项
* @param num目标数组
* @param start数组的开始条目
* @param end数组的结尾
* @return
*/
私有状态列表(int [ ] num,int start,int end ) {
List r=new ArrayList (;
//循环数组中的所有数据
for(intI=0; i num.length; I ) {
//判断是否来到数组的末尾
if(Inum.Length-1 ) {
//消除重复数据时
//数据不连续时
if(num[I]1!=num[i 1] ) {
//当数据处于循环恢复时
if(num[I1]-num[I]0) {
//判断最后的数字是否是最大的开始数字start
int cha=end - num[i];
for(intj=1; j=cha; j ) {
r.add(num[I]1*j );
}
//判断刚开始的数字是否为end
int cha1=num[i 1] - start;
for(intj=0; j cha1; j ) {
r .添加(开始1 * j );
}
} else {
//处理不连续、也不是开头和结尾的情况
int cha=num[i 1] - num[i];
for(intj=1; j cha; j ) {
r.add(num[I]1*j );
}
}
}
}
}
返回r;
}
}