题目描述: 写一个函数,它的作用是接受一个整数(假设为num),返回一个数组,数组的长度为num, 数组中的内容为随机的0至(num-1)的值,并且不能重复。比如num为5的话,数组可能是[1,0,3,2,4]。
这道题目感觉很简单,先给出一种方案,可能有更好的方案。
方案1:
public int[] setArray(int number){ Random random = new Random(); Map<Integer, Integer> map = new HashMap<>(); int array[] = new int[number]; for (int i = 0; i < number; i++) { int n = random.nextInt(number); while(map.containsKey(n)){ n = random.nextInt(number); } map.put(n, n); array[i]= n; } return array; }
测试: 输入number = 10000 用时13ms 输入number = 100000 用时123ms