[黑马论坛]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

原文地址:https://www.cnblogs.com/jianxingjianyuan2014/p/4128731.html