题目:Random Pick Index
有一个元素为可重复正整数的数组,现要查询某个数在该数组中的位置,请你返回它所在的序号。若不止有一个序号,请随机返回其中一个,必须保证这些序号被返回的概率相同。(假定要查询的数必然在数组之中)
Note:
The array size can be very large. Solution that uses too much extra space will not pass the judge. 【LeetCode398】
思路一:用unordered_map存储每个数字所在的序号,查询时返回序号中的随机一个O(1)。
思路二:依次读取数组,每次遇到正确的序号时,有 1/(i++) 的概率返回该序号。
代码略。