題目描述:
給定乙個可能含有重複元素的整數陣列,要求隨機輸出給定的數字的索引。 您可以假設給定的數字一定存在於陣列中。
注意:陣列大小可能非常大。 使用太多額外空間的解決方案將不會通過測試。
示例:int nums = new int ;
solution solution = new solution(nums);
// pick(3) 應該返回索引 2,3 或者 4。每個索引的返回概率應該相等。
solution.pick(3);
// pick(1) 應該返回 0。因為只有nums[0]等於1。
solution.pick(1);
用這種方法比較簡單,首先將值為target的下標放入到list中,然後我們使用random函式取出索引
**:
class solution
public int pick(int target)
} random random = new random();
return list.get(random.nextint(list.size()));}}
這個**我不是很清楚為什麼可以通過呢,感覺沒有隨機啊
class solution
public int pick(int target)
} while (n[x++] != target);
return x - 1;}}
可以看看這個
單元素的蓄水池取樣
class solution
public int pick(int target)
{random r = new random();
int result = 0;
int cnt = 0;
for(int i=0; i蓄水池抽樣及實現
不得不說這個演算法對於大量的資料來說只使用o(n)的時間複雜度真是很好了。
學習了
398 隨機數索引
題目描述 給定乙個可能含有重複元素的整數陣列,要求隨機輸出給定的數字的索引。您可以假設給定的數字一定存在於陣列中。注意 陣列大小可能非常大。使用太多額外空間的解決方案將不會通過測試。示例 int nums new int solution solution new solution nums pic...
隨機數 偽隨機數
隨機數 偽隨機數 rand函式在產生隨機數前,需要系統提供的生成偽隨機數序列的種子,rand根據這個種子的值產生一系列隨機數。如果系統提供的種子沒有變化,每次呼叫rand函式生成的偽隨機數序列都是一樣的。srand unsigned seed 通過引數seed改變系統提供的種子值,從而可以使得每次呼...
隨機數生成 偽隨機數和真隨機數
c語言隨機數的生成,很隨機,又不隨機,比如像下面的程式 c語言生成隨機數的函式在stdlib.h庫中 include includeint main return 0 上面的 經過執行生成了 41 18467 6334 26500但是無論執行多好遍結果都是一樣的,隨機數並不隨機。這是因為rand 函...