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

Python | Leetcode Python题解之第381题O(1)时间插入、删除和获取随机元素-允许重复

题目:

题解:

import random
class RandomizedCollection:def __init__(self):"""Initialize your data structure here."""self.table = {}self.ns = []def insert(self, val: int) -> bool:"""Inserts a value to the collection. Returns true if the collection did not already contain the specified element."""flag = val not in self.tableif flag: self.table[val] = {len(self.ns),}else: self.table[val].add(len(self.ns))self.ns.append(val)return flagdef remove(self, val: int) -> bool:"""Removes a value from the collection. Returns true if the collection contained the specified element."""flag = val in self.tableif flag:last_idx = len(self.ns)-1v = self.ns[last_idx]index = self.table[val].pop()self.ns[index] = self.ns[last_idx]if last_idx != index:  # 如果只是最后一位的话,直接删除就好了self.table[v].remove(last_idx)self.table[v].add(index)if not len(self.table[val]): self.table.pop(val)self.ns.pop()return flagdef getRandom(self) -> int:"""Get a random element from the collection."""return random.choice(self.ns)# Your RandomizedCollection object will be instantiated and called as such:
# obj = RandomizedCollection()
# param_1 = obj.insert(val)
# param_2 = obj.remove(val)
# param_3 = obj.getRandom()

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 机器学习:TF-IDF算法原理及代码实现
  • 聚观早报 | 苹果推出AI消除功能;比亚迪2024上半年营收
  • Spring八股文
  • react- native创建pdf
  • FPGA上板项目(三)——RAM测试
  • 一文认识数据库事务(ACID)
  • 论文解读:Prompt-aligned Gradient for Prompt Tuning
  • Kafka配置文件 - server.properties
  • 履带式森林消防车的功能和应用_鼎跃安全
  • 【uniapp重大bug】uni-data-select的localdata改变,也会触发@change方法
  • JavaWeb——介绍(什么是Web、Web网站的开发模式)、初始Web前端(Web标准、学习内容)
  • 【C/C++】C语言中的内存分布
  • EmguCV学习笔记 VB.Net 7.2 特征点检测
  • 微服务CI/CD实践(四)Jenkins部署及环境配置
  • 「bug」nvitop ERROR: Failed to initialize curses
  • 【RocksDB】TransactionDB源码分析
  • 30秒的PHP代码片段(1)数组 - Array
  • canvas 绘制双线技巧
  • CSS 专业技巧
  • fetch 从初识到应用
  • gops —— Go 程序诊断分析工具
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • Java精华积累:初学者都应该搞懂的问题
  • oldjun 检测网站的经验
  • React的组件模式
  • 关于使用markdown的方法(引自CSDN教程)
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 深度解析利用ES6进行Promise封装总结
  • 数据仓库的几种建模方法
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 我这样减少了26.5M Java内存!
  • C# - 为值类型重定义相等性
  • RDS-Mysql 物理备份恢复到本地数据库上
  • 正则表达式-基础知识Review
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​学习一下,什么是预包装食品?​
  • #pragma 指令
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (十三)Flink SQL
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)德国人的记事本
  • (自用)交互协议设计——protobuf序列化
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .NET设计模式(11):组合模式(Composite Pattern)
  • .NET使用存储过程实现对数据库的增删改查
  • .Net下C#针对Excel开发控件汇总(ClosedXML,EPPlus,NPOI)
  • ::
  • @CacheInvalidate(name = “xxx“, key = “#results.![a+b]“,multi = true)是什么意思
  • [10] CUDA程序性能的提升 与 流
  • [8] CUDA之向量点乘和矩阵乘法
  • [Angular] 笔记 6:ngStyle