为什么80%的码农都做不了架构师?>>>   

Question

710. Random Pick with Blacklist

Solution

题目大意:给一个N,表示一个范围[0,N),给一个黑名单列表blacklist,其中blacklist中的元素在[0,N)范围内,调用pick方法的时候随机返回一个数,这个数满足

  1. 在[0,N)范围
  2. 不在blacklist内
  3. 要随机

思路:构造一个集合M,该M是 [0,N) - blacklist 的一个集合,调用pick时,返回[0,M)的一个随机数并根据这个随机数从集合M中取数即可。

Java实现:

class Solution {int M;Map<Integer, Integer> map;Random r;public Solution(int N, int[] blacklist) {M = N - blacklist.length;map = new HashMap<>();r = new Random();for (int tmp : blacklist) {map.put(tmp, -1);}for (int tmp : blacklist) {if (tmp < M) {while (map.containsKey(N-1)) {N--;}map.put(tmp, --N);}}}public int pick() {// random in [0,N) not in blacklistint p = r.nextInt(M);if (map.containsKey(p)) return map.get(p);return p;}
}/*** Your Solution object will be instantiated and called as such:* Solution obj = new Solution(N, blacklist);* int param_1 = obj.pick();*/

转载于:https://my.oschina.net/yysue/blog/1846164

710. Random Pick with Blacklist - LeetCode相关推荐

  1. 710. Random Pick with Blacklist 黑名单中的随机数(Hard)

    1. 描述 给定一个包含 [0,n) 中不重复整数的黑名单 blacklist ,写一个函数从 [0, n) 中返回一个不在 blacklist 中的随机整数. 对它进行优化使其尽量少的调用Math. ...

  2. 398. Random Pick Index - LeetCode

    为什么80%的码农都做不了架构师?>>>    Question 398. Random Pick Index Solution 思路:重点是如果数据中有多个数target相等,要从 ...

  3. leetcode 398. Random Pick Index | 398. 随机数索引(Java)

    题目 https://leetcode.com/problems/random-pick-index/ 题解 常规思路,先用 map 存一串,取的时候从 map 对应的串中随机拿一个就 ok. cla ...

  4. LeetCode Random Pick Index(蓄水池抽样算法)

    问题:给出一个数组,存在相同的数,随机输出目标数所在的下标 思路:使用蓄水池抽样算法,当第一次找到目标数时,作为选取.接着如果随机数等于0,则选取.在遍历完后,直接返回选取的值 具体代码参考: htt ...

  5. 【LeetCode】528. Random Pick with Weight 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址:https://leetcode.com/problems/random-pi ...

  6. python leetcode 398. Random Pick Index

    奇怪的是蓄水池抽样算法无法AC 代码2是蓄水池抽样 class Solution(object):import randomdef __init__(self, nums):""& ...

  7. leetcode 528. Random Pick with Weight

    给一个权重的vector,让你根据权重的概率返回值,返回的值是这些权重的索引. 比如给你一个[1,2]的权重矩阵,1/3的概率返回0,2/3的概率返回1. 等概率函数random只能等概率的一系列数, ...

  8. 398. Random Pick Index

    随机返还target值的坐标(如果存在多个target). 不太明白为什么这个题是M难度的. 无非是要么弄TABLE之类的,开始麻烦点,但是pick的时候直接PICK出来就行了. 要么开始简单点,都存 ...

  9. leetcode 题解 (500-1000题,持续更新,part 2)

    part1(1-500), part3(1000-*) 502. IPO 题意:给定k,w,profits数组和capital数组.k表示最多可完成的任务数.w是初始资本.profits是各个任务的收 ...

最新文章

  1. tensorflow函数API总结
  2. 【更新链接】U盘启动制作工具(UDTOOL) v3.0.2014.0427
  3. Netty学习笔记(一)Netty客户端源码分析
  4. redis中几种数据存储方式的比较
  5. 安装secureCRT提示sorry的解决办法
  6. php课后题,知到PHP语言程序设计课后习题答案
  7. Android-JNI开发系列《八》CMakeLists.txt语法使用
  8. IS-IS IPv6配置实例
  9. PDH性能测试之五--待续
  10. ELK (三)安装kibana
  11. pandas使用速查表
  12. 第14届蓝桥杯省赛真题剖析-2023年5月7日Scratch编程初级组
  13. oracle进行列合并,oracle列合并的实现方法
  14. 云服务器gitlab,云服务器CentOS7.4下搭建GitLab
  15. 【Java】Java获取昨天日期的正确姿势
  16. 个人网站—首页HTML+CSS(超级简单的那种)
  17. PHP服务器在线测速系统源码+亲测可用
  18. 阿里巴巴“奇幻”上市之旅惨遭红灯
  19. 大学计算机基础--1
  20. mysql官方yum源_mysql 采用官方yum源的安装方法

热门文章

  1. maven模块化分解项目
  2. SQL:两种获取时间类型日期部分的方法
  3. Bootstrap3.0学习第十一轮(输入框组)
  4. 设计模式 - Visitor 模式(访问者模式)
  5. QQ密码算法 用于命令行登录
  6. Web应用中避免Form重复提交的三种方案
  7. 多家航空巨头遭大规模供应链攻击
  8. 近300个 Windows 10 可执行文件易受 DLL 劫持攻击
  9. Rust 2018临近:设法从Rust 2015过渡
  10. PHP使用CodeIgniter笔记