刚开始看见这个题目,觉得很容易,不是疯狂的比较么,于是设计的大致思路如下;
从100个数中拿出1个然后跟98个比较 如果有相同的说明这个没有被拿掉.这样在最极端情况下需要比较 100*98次
首先写一个数据类,产生100个不相同的数,随机拿走两个数,然后把剩余的98个数拿到新的数组里面
package com.koopa.searchNum;
public class DataInit {
private int totalNum;
private int findNum;
private int []totalNums; //存放 n个不同的数字
private int []findNums; //存放取出的m个数
private int remainNums[];//存放取出m个数字后的 n个不同数字
private static DataInit dataInit = null;
private DataInit(int totalNum,int findNum) throws InputErrorException{
if(totalNum<=findNum){
throw new InputErrorException();
}
this.totalNum = totalNum;
this.findNum = findNum;
totalNums = new int[totalNum];
findNums = new int[findNum];
remainNums = new int[totalNum - findNum];
this.init();
}
private void init(){
for(int i = 0;i<totalNum;i++){
totalNums[i] = i;
}
for(int i = 0; i<findNum;i++){
int random = this.getRandom(totalNum);
if(this.isIn(random, findNums)){
i--;
}else{
findNums[i] = random;
System.out.println("remove: "+random);
}
}
int index=0;
for(int i:totalNums){
if(!this.isIn(i, findNums)){
remainNums[index++] = i;