LeetCode 398 隨機數索引

2021-10-03 07:23:18 字數 1006 閱讀 3248

給定乙個可能含有重複元素的整數陣列,要求隨機輸出給定的數字的索引。 您可以假設給定的數字一定存在於陣列中。

注意:陣列大小可能非常大。 使用太多額外空間的解決方案將不會通過測試。

示例: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);

import random

class

solution

:def

__init__

(self, nums: list[

int]):

self._index_dict =

dict()

for i,num in

enumerate

(nums)

:if num in self._index_dict.keys():

l = self._index_dict.get(num)

self._index_dict[num]

= l else

: l =

list()

self._index_dict[num]

= l def

pick

(self, target:

int)

->

int:

l = self._index_dict.get(target)

index = random.randint(0,

len(l)-1

) t = l[index]

return t

Leetcode 398 隨機數索引

給定乙個可能含有重複元素的整數陣列,要求隨機輸出給定的數字的索引。您可以假設給定的數字一定存在於陣列中。注意 陣列大小可能非常大。使用太多額外空間的解決方案將不會通過測試。示例 int nums new int solution solution new solution nums pick 3 應...

leetcode398 隨機數索引

給定乙個可能含有重複元素的整數陣列,要求隨機輸出給定的數字的索引。您可以假設給定的數字一定存在於陣列中。注意 陣列大小可能非常大。使用太多額外空間的解決方案將不會通過測試。示例 int nums new int solution solution new solution nums pick 3 應...

leetcode398 隨機數索引 蓄水池抽樣問題

假設當前正要讀取第n個資料,則我們以1 n的概率留下該資料,否則留下前n 1個資料中的乙個,以這種方式選擇,所有資料流中資料被選擇的概率一樣。具體 class solution public intpick int target return index your solution object w...