LeetCode 710 黑名单中的随机数[随机数] HERODING的LeetCode之路
Posted HERODING23
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 710 黑名单中的随机数[随机数] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。
解题思路:
实现[0,n-m]区间黑名单对[n-m, n]的非黑名单映射,然后取[0,n-m]随机数,如果是白名单直接返回,否则返回映射的白名单数,代码如下:
class Solution
unordered_map<int, int> b2w;
int bound;
public:
Solution(int n, vector<int> &blacklist)
int m = blacklist.size();
bound = n - m;
unordered_set<int> black;
for (int b: blacklist)
if (b >= bound)
black.emplace(b);
int w = bound;
for (int b: blacklist)
if (b < bound)
while (black.count(w))
++w;
b2w[b] = w++;
int pick()
int x = rand() % bound;
return b2w.count(x) ? b2w[x] : x;
;
以上是关于LeetCode 710 黑名单中的随机数[随机数] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章
710. Random Pick with Blacklist - LeetCode
[LeetCode] Random Pick with Blacklist 带黑名单的随机选取