[黑马论坛]24期技术活动题目及答案!
----------------24期技术活动题目:
题目:已知一个数组int[98],该数组里面存储了0~99共100个数字中的98个,数字不重复,请用算法算出0~99中缺少的2个数字是哪两个?
要求:数组自己用程序生成,数值介于0~99,相互之间不重复。上传代码的时候将运算结果截图一起提交。
----------------答案:
package dataType;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
public class practice {
public static void main(String[] args) {
int[] arr = new int[98];
Map<Integer,Integer> map = new HashMap<Integer,Integer>();
//为数组随机赋0~99不重复的数值,并将数组的值和角标作为key与value存入HashMap集合中
Random r = new Random();
for (int i = 0; i < 98; i++) {
arr[i] = r.nextInt(100);
for (int j = 0; j < i; j++) {
if (arr[i] == arr[j]) {
i--;
break;
}
}
map.put(arr[i],i);
}
//打印随机赋值的数组中元素
System.out.println("已知数组中的元素是:");
for(int x=0;x<arr.length;x++){
System.out.print(arr[x]+" ");
}
//换行
System.out.println();
//打印出缺失的两个数
System.out.println("缺少的两个数是:");
for(int i =0;i<100;i++){
if(!map.containsKey(i))
System.out.print(i+" ");
}
}//public static void main(String[] args)
}//public class practice