zoukankan      html  css  js  c++  java
  • (面试)将1到100的随机数插入到长度为100的数组中,保证不会有重复元素

    题目:将1到100的随机数插入到长度为100的数组中,保证不会有重复元素

    ---方案一:使用set集合,可以保证set中不会有重复元素,当set大小为100时,退出循环;

                   获取1--100随机数方法有 : int a = (int)(Math.random()*100+1); 或 int a = new Random().nextInt(100);

    ---方案二:每次添加随机数到数组时,都检测原数组是否已经存在此元素

    ---方案三:生成1--100的链表LinkedList(也可以用数组,但是删除操作麻烦,不如链表),随机数范围是1--99,指定的是链表的元素索引位置;

                  这样每次生成一个随机索引对应的元素,就放到一个100长度的数组中;并且从原来的链表中除去随机索引对应的元素 && 同时随机数生成范围改为1--98;

                 以此类推,直到目标数组元素个数为100为止。

    比较分析:通常方案1,2都不能确定程序什么时候退出,因为要等随机到1--100中所有的元素才能满足退出,导致的问题可能是执行好久,

                 并且不可预知、不可控。

                 方案3很好,能够快速执行,因为它每次去一个随机数,就从原来的列表中删除且随机返回也相应减一;

                        

  • 相关阅读:
    11.22
    python之字典(dict)
    Version Control
    java_实现一个类只能声明一个对象
    javase-位运算符
    javase-整数变量的交换
    URI和URL的关系与区别
    http解析
    函数式语言
    MyIASM和Innodb引擎详解
  • 原文地址:https://www.cnblogs.com/qqzy168/p/3261462.html
Copyright © 2011-2022 走看看