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.pswp.cn/bicheng/89925.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/89925.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RxJava 全解析:从原理到 Android 实战

在 Android 开发中&#xff0c;异步任务处理是绕不开的核心场景 —— 网络请求、数据库操作、文件读写等都需要在后台执行&#xff0c;而结果需回调到主线程更新 UI。传统的 “HandlerThread” 或 AsyncTask 不仅代码冗余&#xff0c;还容易陷入 “回调地狱”&#xff08;嵌套回…

OpenCV 官翻7 - 对象检测

文章目录ArUco 标记检测标记与字典标记物创建标记检测姿态估计选择字典预定义字典自动生成字典手动定义字典检测器参数阈值处理adaptiveThreshConstant轮廓过滤minMarkerPerimeterRate 与 maxMarkerPerimeterRatepolygonalApproxAccuracyRateminCornerDistanceRateminMarkerDis…

【Oracle】ORACLE OMF说明

ORACLE OMF (Oracle Managed Files) 是 Oracle 数据库提供的一项自动化文件管理功能。它的核心目的是简化数据库管理员&#xff08;DBA&#xff09;对数据库底层操作系统文件的管理工作。 以下是 OMF 的关键要点&#xff1a; 核心功能&#xff1a;自动命名和定位文件 在创建数据…

408考研逐题详解:2010年第35题——RIP协议

2010年第35题 某自治系统内采用 RIP 协议&#xff0c;若该自治系统内的路由器 R1 收到其邻居路由器 R2 的距离矢量&#xff0c;距离矢量中包含信息 <net1, 16>&#xff0c;则能得出的结论是&#xff08; &#xff09; A. R2 可以经过 R1 到达 net1&#xff0c;跳数为17 …

http与https的主要区别是什么?

什么是HTTP&#xff1f; HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;是互联网上应用最为广泛的一种网络协议。它构成了Web数据通信的基础&#xff0c;并定义了客户端和服务器之间如何请求和传递网页信息。当您在浏览器中输入一个网址时…

STC89C52系列单片机简介

STC89C52系列单片机是由中国宏晶科技&#xff08;STC&#xff09;推出的一款新一代增强型8051内核单片机。它不仅继承了传统8051指令系统的兼容性&#xff0c;还在性能、功耗、抗干扰能力以及性价比方面进行了全面提升&#xff0c;广泛应用于各类嵌入式控制场景&#xff0c;如工…

基于 Docker 环境的 JupyterHub 详细部署手册

本文详细介绍基于Docker Compose的单机版JupyterHub部署方案&#xff0c;通过容器化技术实现多用户Notebook环境的快速搭建。方案采用官方JupyterHub镜像&#xff0c;配置11个端口映射&#xff08;18000-18010&#xff09;支持用户并发&#xff0c;通过数据卷挂载&#xff08;.…

常见的万能密码

目录 1. 通用SQL注入 2. 登录绕过 3. 密码重置 1. 通用SQL注入 or 11-- " or 11-- or aa " or "a""a or 11# " or 11# or 11/* " or 11/* or 11 " or "1""1 2. 登录绕过 admin-- admin or 11-- admin or aa …

04训练windows电脑低算力显卡如何部署pytorch实现GPU加速

大多数人用的电脑的显卡配置可能没有那么强,也就是说,我们很难享受到最新版本pytorch给我们带来的模型训练的速度和效率,为此,我们需要想办法在现有显卡情况下部署应用pytorch。 笔者有一台电脑,显卡算力很低,那么以该电脑为例,为大家介绍如何部署应用pytorch功能。 1…

PPT科研画图插件

PPT科研画图插件 iSlide- 让PPT设计简单起来 | PPT模板下载平台iSlide - 简单&#xff0c;好用的PPT插件&#xff01;拥有30万 原创可商用PPT模板&#xff0c;PPT主题素材&#xff0c;PPT案例&#xff0c;PPT图表&#xff0c;PPT图示&#xff0c;PPT图标&#xff0c;PPT插图和8…

CSS实现背景图片渐变透明

复合写法background: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, #FFF 82.5%),url(https://example.com/image.jpg) center / cover no-repeat;参数说明&#xff1a;linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, #FFF 82.5%)创建从下至上的垂直渐变&#xff…

基于pyside6的通用机器人遥控控制界面

1. 前言 这两天需要帮一个朋友做一个简单的遥控控制界面&#xff0c;用于控制一台复合机器人(万向轮底盘机械臂旋转云台)&#xff0c;在这里分享一下 2. 开发框架 由于朋友那边的控制接口都是使用python来写的&#xff0c;所以我这里也使用py来完成这个遥控界面的开发。但其…

【iOS】ZARA仿写

【iOS】ZARA仿写 文章目录【iOS】ZARA仿写前言首页发现我的对姓名的更改总结前言 暑假第一个的任务仿写ZARA 虽然不是特别难却有很多小细节需要注意 首页 点进程序出现的就是整个项目最主要的一个点&#xff0c;即首页的无限轮播图&#xff0c;不管是自动轮播还是手动滑动&a…

Kubernetes Pod 调度基础

一、Replication Controller 和 ReplicaSet1、Replication ControllerReplication Controller&#xff08;复制控制器&#xff0c;RC&#xff09;RC 用来确保 Pod 副本数达到期望值&#xff0c;这样可以确保一个或多个同类 Pod 总是可用的。如果存在的 Pod 数量大于设定的值&am…

菜鸟的C#学习(二)

文章目录一、类的访问1、普通类继承抽象类2、普通类继承抽象类&#xff0c;抽象类继承接口&#xff0c;三者联系二、类中方法的访问2.1 抽象方法和虚方法2.2 虚方法和普通方法**1. 调用机制****2. 方法重写****3. 设计意图****4. 性能差异****5. 语法对比表****总结&#xff1a…

04 51单片机之数码管显示

文章目录1、前言2、数码管3、单个数码管引脚定义3-1、单个共阴极3-2、单个共阳极3-3、单个数码管引脚定义4、四位一体数码管引脚定义4-1、四位一体共阴极数码管4-2、四位一体共阳极数码管4-3、四位一体数码管引脚定义5、数码管原理图6、C51数组&#xff08;补充知识点&#xff…

【LLM】OpenRouter调用Anthropic Claude上下文缓存处理

背景 在使用OpenRouter调用Anthropic Claude大模型时&#xff0c;部分模型支持上下文缓存功能。当缓存命中时&#xff0c;调用成本会显著降低。虽然像DeepSeek这类模型自带上下文缓存机制&#xff0c;但本文主要针对构建Agent场景下&#xff0c;需要多次调用Anthropic Claude时…

【C++】第十七节—二叉搜索树(概念+性能分析+增删查+实现+使用场景)

好久不见&#xff0c;我是云边有个稻草人 《C》本文所属专栏—持续更新中—欢迎订阅 目录 一、二叉搜索树的概念 二、二叉搜索树的性能分析 三、二叉搜索树的插入 SearchBinaryTree.h test.cpp 四、⼆叉搜索树的查找 【只有一个3】 【有多个3】 五、⼆叉搜索树的删除…

Redis都有哪些数据结构,使用场景与原理解析

✅ String&#xff1a;字符串&#xff08;最常用、最简单的类型&#xff09;&#x1f4cc; 应用场景&#xff1a;计数器&#xff08;如&#xff1a;页面浏览量、点赞数、转发数等&#xff09;缓存单个值&#xff08;如&#xff1a;token、验证码、用户昵称&#xff09;分布式锁…

将EXCEL或者CSV转换为键值对形式的Markdown文件

# 创建命令行参数解析器parser argparse.ArgumentParser(description将 CSV 或 Excel 文件转换为带标头的 Markdown 格式)# 必需参数parser.add_argument(input_file, help输入文件路径 (CSV 或 Excel))parser.add_argument(output_file, help输出 Markdown 文件路径)# 可选参…