• 管理
  • 算法练习-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  斑马森林  阅读(370)  评论(0)    收藏  举报