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

Question

398. Random Pick Index

Solution

思路:重点是如果数据中有多个数target相等,要从这些数中随机取一个,根据例题

假设输入是:
int[] nums = new int[]{1, 2, 3, 3, 3};
int target = 3;模拟:
1  != target pass
2  != target pass
3  == target pick的概率 nextInt(1)==0的概率 1,返回这个index的概念是1 - 1/3 -1/3 = 1/3
3  == target pick的概率 nextInt(2)==0的概率 1/2, 返回这个index的概率是1/2 * 2/3 = 1/3
3  == target pick的概率 nextInt(3)==0的概率 1/3, 返回这个index的概率是1/3

Java实现:

class Solution {private int[] nums;private Random random;public Solution(int[] nums) {this.nums = nums;random = new Random();}public int pick(int target) {int index = -1;int count = 0;for (int i=0; i<nums.length; i++) {if (nums[i] == target && random.nextInt(++count) == 0) {index = i;}}return index;}
}/*** Your Solution object will be instantiated and called as such:* Solution obj = new Solution(nums);* int param_1 = obj.pick(target);*/

Reference

  • https://gitee.com/okokabcd/leetcode

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

398. Random Pick Index - LeetCode相关推荐

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

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

  2. python leetcode 398. Random Pick Index

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

  3. 398. Random Pick Index

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

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

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

  5. 710. Random Pick with Blacklist - LeetCode

    为什么80%的码农都做不了架构师?>>>    Question 710. Random Pick with Blacklist Solution 题目大意:给一个N,表示一个范围[ ...

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

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

  7. leetcode 528. Random Pick with Weight

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

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

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

  9. 取得数组中的随机数random.nextInt(index)

    public static void main(String[] args) { int[] tester = {1,2,3,5}; if(tester.length>1){ Random ra ...

最新文章

  1. 初学ssm框架的信息
  2. centos6.7 64位环境下部署MySQL-5.7.13
  3. -Git 使用技巧 总结 MD
  4. C++中的抽象类以及接口的区别联系
  5. pikachu安装以及安装时遇到的的问题——pikachu数据库链接不上config.inc.php 以及侧边栏访问没有反应,只有URL加了个#原因和解决办法
  6. Istio Pilot 源码分析(二)
  7. Python 算法之递归与尾递归,斐波那契数列以及汉诺塔的实现
  8. teechart绘制实时曲线_快速学会CAD绘制传输线路图纸
  9. git 命令详解和常见问题解决
  10. [转]使用FFmpeg将视频推流到nginx,通过vlc拉流播放(通过命令的方式)
  11. 1032. 挖掘机技术哪家强(20)-PAT乙级真题
  12. QT: QTableWidget 表格中按钮槽函数 获取表格该按钮所在的行号信息
  13. 谷歌 kaptcha 图片验证码
  14. 基于IR2136的三相电机控制
  15. 2022年通用航空行业研究报告
  16. 双ip的oracle集群该怎么连接,如何配置电信联通双线双IP接入
  17. 天肌处理器天梯排行榜2022 2022天玑处理器天梯图
  18. android ar 动画,Android实现支付宝AR扫描动画效果
  19. Redis学习、缓存、持久化、哨兵模式
  20. 【Linux C】进程、线程和进程间通信

热门文章

  1. c语言scanf结果在printf前,C语言中的scanf与printf
  2. 为什么在反向传播中感知器初始值不能为0_人工智能可以为我们做什么?世界皆可二分类...
  3. 树莓派人脸识别门禁opencv4.2_树莓派人脸识别实际应用:人脸识别门禁
  4. linux硬件控制流,Linux系统学习笔记:异常控制流
  5. 孩子数学成绩不好怎么办_孩子数学成绩不好,家长可以这样做
  6. 自己珍藏一些有趣的Python子程序
  7. 线上比赛中关于视觉AI组与信标组补充说明
  8. 如何将代码优雅的放在WORD文档中?
  9. RASPBERRY PI PICO 开发板 基础测试
  10. 世界上最美丽的23个公式