1. 题目

给定一个可能含有重复元素的整数数组,要求随机输出给定的数字的索引。 您可以假设给定的数字一定存在于数组中。

注意:
数组大小可能非常大。 使用太多额外空间的解决方案将不会通过测试。

示例:
int[] nums = new int[] {1,2,3,3,3};
Solution solution = new Solution(nums);// pick(3) 应该返回索引 2,3 或者 4。每个索引的返回概率应该相等。
solution.pick(3);// pick(1) 应该返回 0。因为只有nums[0]等于1。
solution.pick(1);

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/random-pick-index
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 蓄水池抽样

类似题目:LeetCode 519. 随机翻转矩阵(哈希)

  • 遇到 target,计数+1,然后用 计数分之1的概率去替换之前找到的 target 的下标
class Solution {vector<int> arr;int i, idx, count;bool Occur;
public:Solution(vector<int>& nums) {arr = nums;}int pick(int target) {Occur = false;count = 0;for(i = 0; i < arr.size(); ++i){if(arr[i] == target){if(!Occur){idx = i;Occur = true;count = 1;}else{count++;if(rand()%count == 0)//有 1/count 的概率等于0idx = i;}}}return idx;}
};

LeetCode 398. 随机数索引(概率)相关推荐

  1. Java实现 LeetCode 398 随机数索引

    398. 随机数索引 给定一个可能含有重复元素的整数数组,要求随机输出给定的数字的索引. 您可以假设给定的数字一定存在于数组中. 注意: 数组大小可能非常大. 使用太多额外空间的解决方案将不会通过测试 ...

  2. Leetcode 398.随机数索引

    原题链接:Leetcode 398. Random Pick Index Given an integer array nums with possible duplicates, randomly ...

  3. Leetcode 398. 随机数索引 解题思路及C++实现

    解题思路: 题目对空间复杂度有要求.在构造函数中,应该要先把nums数组拷贝一下. 在pick函数中,必然要遍历数组nums,这样才能得到 target 值对应的所有索引,之后再生成一个随机数,返回任 ...

  4. LeetCode 398 随机数索引 Python

    给定一个可能含有重复元素的整数数组,要求随机输出给定的数字的索引. 您可以假设给定的数字一定存在于数组中. 注意: 数组大小可能非常大. 使用太多额外空间的解决方案将不会通过测试. 示例: int[] ...

  5. LeetCode 398. 随机数索引

    1.题目 https://leetcode-cn.com/problems/random-pick-index/ 2.题解 蓄水池抽样 其思路就是循环之后先判断一下这个数在数组中的索引, 然后随机选出 ...

  6. 398. 随机数索引 ( 设计 )

    LeetCode:398. 随机数索引 要求返回 target 在数组中随机的一个下标 留意,这个数组不是有序的,有序的话使用 二分查找. 这里无序的, 直接保存相同元素的下标,然后随机返回 AC C ...

  7. leetcode刷题记录-398. 随机数索引

    前言 今天的题目为中等,跟之前碰到过的一道题思路很相似,利用map表来空间换时间,以此来做到节省时间复杂度. 每日一题 今天的题目是 398. 随机数索引,难度为中等 给你一个可能含有 重复元素 的整 ...

  8. 398. 随机数索引(哈希表预处理 Or 蓄水池抽样)

    文章目录 Question Ideas 1.Answer( Java ) `⚡️ getOrDefault(Object key, V defaultValue)` Code①( HashMap 实现 ...

  9. LeetCode系列398—随机数索引(蓄水池抽样)

    题意 给定一个可能含有重复元素的整数数组,要求随机输出给定的数字的索引. 您可以假设给定的数字一定存在于数组中. 注意: 数组大小可能非常大. 使用太多额外空间的解决方案将不会通过测试. 示例: in ...

最新文章

  1. 一文读懂 Nginx
  2. 计算机初中教师资格教案,初中教师资格证教学设计
  3. 如何用css实现等高布局。
  4. Java黑皮书课后题第6章:6.12(显示字符)使用下面的方法头,编写一个打印字符的方法。编写一个测试程序、打印从‘1‘到‘Z‘的字符,每行打印10个,字符之间使用一个空格字符隔开
  5. Android安卓程序消息提示和按钮响应事件
  6. zk 布局_ZK实际应用:样式和布局
  7. 语雀携手Teambition,玩转项目协作与知识管理
  8. vue-strap的几种安装方式哪个最简便?
  9. lambda表达式学习(详细理解 ) 重点在最后
  10. [转帖] Windows 与linux的栈大小问题
  11. 安装 samba 记录
  12. 语法分析:自上而下分析
  13. CPU缓存侧信道攻击综述-Survey of CPU Cache-Based Side-Channel Attacks
  14. [数据通信]DHCP报文详解
  15. 【工程光学】平面与平面系统
  16. 去YY欢聚时代的一次面试经历
  17. uniapp 电商小程序 订单30分钟倒计时
  18. cmd package install-create -r -t -S returns error
  19. 7天内完成基础USB开发(3)——硬件平台介绍及开发要点
  20. QuartusII仿真通过但上板验证不过

热门文章

  1. 点乘和叉乘的区别_关于延时和混响的区别与专用延时器与混响器的调控技巧
  2. HALCON常用算子(HALCON13.0)
  3. Unable to install pirate
  4. 和aes相比较有哪些特点_“黑枸杞”和“红枸杞”相比较,功效方面究竟存在哪些差别?...
  5. php 加密保存mysql_PHP及MYSQL中字符串加密函数
  6. vue 组件之间数据传递(七)
  7. 腾讯云安全组规则导出
  8. 企业的网站遭受木马攻击了,导致网站目录下所有文件都被篡改了
  9. 14.5.5.1 An InnoDB Deadlock Example 一个InnoDB 死锁实例
  10. mysql常见问题记录