題目:將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很好,能夠快速執行,因為它每次去一個隨機數,就從原來的列表中刪除且隨機返回也相應減一;