62,620
社区成员
发帖
与我相关
我的任务
分享public class Test {
private int arrLen;
private int num;
private int appointNum;
private int[] arr;
private int[] b;
public Test(int arrLen, int num, int appointNum){
this.arrLen=arrLen;
this.arr=new int[arrLen];
for(int i=0;i<this.arrLen;i++){
arr[i]=i+1;
}
this.num=num;
this.appointNum=appointNum;
SetArrayB();
}
private void SetArrayB(){
if(arrLen<=appointNum){
b=new int[arrLen];
for(int i=0;i<arrLen;i++){
b[i]=i+1;
}
}else{
b=new int[appointNum];
if((num-1)/appointNum==0){
for(int i=0;i<appointNum;i++){
b[i]=i+1;
}
}else if(num>(arrLen-appointNum)){
int temp=arrLen;
for(int i=appointNum-1;i>=0;i--){
b[i]=temp--;
}
}else{
//之前主要是把这一部分的情况想复杂了
//现在已经是简化后的代码
int temp=num;
while(temp%appointNum!=1){
temp--;
}
for(int i=0;i<appointNum;i++){
b[i]=temp++;
}
}
}
}
public int[] getArrayB() {
return b;
}
public void printArrayB(){
int lenB=b.length;
System.out.print("num="+num+" -> ");
for(int i=0;i<lenB;i++){
System.out.print(b[i]+" ");
}
System.out.println();
}
public static void main(String[] args) {
int arrLen=22;
int appointNum=5;
//根据arrLen和appointNum对各种情况数字枚举遍历
int num[]={1,5,6,15,16,17,18,22};
int numLen=num.length;
for(int i=0;i<numLen;i++){
Test t=new Test(arrLen,num[i],appointNum);
t.printArrayB();
}
}
}