当前位置: 首页 > news >正文

Leetcode 710. 黑名单中的随机数

1.题目基本信息

1.1.题目描述

给定一个整数 n 和一个 无重复 黑名单整数数组 blacklist 。设计一种算法,从 [0, n - 1] 范围内的任意整数中选取一个 未加入 黑名单 blacklist 的整数。任何在上述范围内且不在黑名单 blacklist 中的整数都应该有 同等的可能性 被返回。

优化你的算法,使它最小化调用语言 内置 随机函数的次数。

实现 Solution 类:

  • Solution(int n, int[] blacklist) 初始化整数 n 和被加入黑名单 blacklist 的整数

  • int pick() 返回一个范围为 [0, n - 1] 且不在黑名单 blacklist 中的随机整数

1.2.题目地址

https://leetcode.cn/problems/random-pick-with-blacklist/description/

2.解题方法

2.1.解题思路

哈希表。记m=len(blacklist),将[0,n-m)范围内的黑名单元素映射到[n-m,n)范围内的非黑名单元素,然后在[0,n-m)范围内进行随机选择,当选择到黑名单元素时,映射到[n-m,n)范围内的非黑名单元素

3.解题代码

python代码

class Solution:# 思路:哈希表。记m=len(blacklist),将[0,n-m)范围内的黑名单元素映射到[n-m,n)范围内的非黑名单元素,然后在[0,n-m)范围内进行随机选择,当选择到黑名单元素时,映射到[n-m,n)范围内的非黑名单元素def __init__(self, n: int, blacklist: List[int]):m = len(blacklist)self.bound = n - mblackSet = set([i for i in blacklist if i >= self.bound])    # set(blacklist)self.map1 = {}# 将小于n-m的黑名单成员映射到大于等于n-m的非黑名单成员中w = n - mfor black in blacklist:if black < n - m:while w in blackSet:w += 1self.map1[black] = ww += 1# print(self.map1)def pick(self) -> int:x = randrange(self.bound)return self.map1.get(x, x)# Your Solution object will be instantiated and called as such:
# obj = Solution(n, blacklist)
# param_1 = obj.pick()

4.执行结果

http://www.dtcms.com/a/288698.html

相关文章:

  • 使用 Pyecharts 绘制精美饼状图:从基础到高级技巧
  • PDF 编辑器:多文件合并 拆分 旋转 顺序随便调 加水印 密码锁 页码背景
  • 微服务雪崩防护最佳实践之sentinel
  • Java 大视界 -- Java 大数据在智能安防门禁系统中的权限动态管理与安全审计(353)
  • 嵌入式硬件篇---舵机(示波器)
  • 测试学习之——Pytest Day4
  • python中读取 Excel 表格数据
  • 将EXCEL或者CSV转换为键值对形式的Markdown文件
  • 推荐一款基于.NET的进程间通信框架
  • 【橘子分布式】gRPC(编程篇-下)
  • 基于SHAP的特征重要性排序与分布式影响力可视化分析
  • ZooKeeper学习专栏(一):分布式协调的核心基石
  • 28.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--币种服务(二)
  • 智能驾驶整体技术架构详解
  • OPC UA, CAN, PROFINET, SOCKET, MODBUS, HTTP, S7七种物联网常用协议解释
  • Shell脚本-tee工具
  • 《计算机网络》实验报告三 UDP协议分析
  • DAY 20 奇异值分解(SVD)
  • 【Elasticsearch】冷热集群架构
  • 【数据结构】二维差分数组
  • 【milvus检索】milvus检索召回率
  • `TransportService` 是 **Elasticsearch 传输层的“中枢路由器”**
  • java-chains 是 Vulhub 团队开发的一款专注于 Java 反序列化漏洞利用链(Gadget Chains) 的安全测试工具
  • 算法训练营day25 回溯算法④ 补充联系题目 332.重新安排行程、51. N皇后、37. 解数独
  • 【Settlement】P1:整理GH中的矩形GRID角点到EXCEL中
  • 算法题(176):three states
  • Python 图片爬取入门:从手动下载到自动批量获取
  • 【JS逆向基础】数据库之MongoDB
  • Django接口自动化平台实现(四)
  • 基于单片机的智能家居安防系统设计