算法练习-002-返回一个set数组

 

题目描述:
写一个函数,它的作用是接受一个整数(假设为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

  

 

 

posted @ 2018-11-12 17:47  斑马森林  阅读(350)  评论(0编辑  收藏  举报