初学python记录:力扣705. 设计哈希集合

题目:

不使用任何内建的哈希表库设计一个哈希集合(HashSet)。

实现 MyHashSet 类:

  • void add(key) 向哈希集合中插入值 key 。
  • bool contains(key) 返回哈希集合中是否存在这个值 key 。
  • void remove(key) 将给定值 key 从哈希集合中删除。如果哈希集合中没有这个值,什么也不做。

提示:

  • 0 <= key <= 10^6
  • 最多调用 104 次 addremove 和 contains

思考:

偷懒做法:超大数组

因为 0<= key <= 10^6,所以可以建立一个长度为 10^6 + 1 的超大数组,数组的索引代表key值,数组的值(True / False)代表是否存在key值。代码如下:

class MyHashSet(object):def __init__(self):self.hashset =  [False] * 1000001def add(self, key):""":type key: int:rtype: None"""self.hashset[key] = Truedef remove(self, key):""":type key: int:rtype: None"""self.hashset[key] = Falsedef contains(self, key):""":type key: int:rtype: bool"""return self.hashset[key]

提交通过:

 

正经做法:哈希函数+链地址法

设置一个长度为volume的数组hash,由volume个空列表组成。哈希函数为index=key%volume。那么对于任意值key,用哈希函数计算得到key所在的列表的位置,然后在列表中进行add、remove、contains操作。

由于 0<= key <= 10^6,所以取volume值为10^3,代码如下:

class MyHashSet(object):def __init__(self):self.volume = 1000self.hashset = [[] for _ in range(self.volume)]def _hash(self, key):return key % self.volume    # 哈希函数def add(self, key):""":type key: int:rtype: None"""index = self._hash(key)if key not in self.hashset[index]:self.hashset[index].append(key)def remove(self, key):""":type key: int:rtype: None"""index = self._hash(key)if key in self.hashset[index]:self.hashset[index].remove(key)def contains(self, key):""":type key: int:rtype: bool"""index = self._hash(key)if key in self.hashset[index]:return Truereturn False

提交通过:

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/815054.shtml

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

相关文章

Linux部署自动化运维平台Spug

文章目录 前言1. Docker安装Spug2 . 本地访问测试3. Linux 安装cpolar4. 配置Spug公网访问地址5. 公网远程访问Spug管理界面6. 固定Spug公网地址 前言 Spug 面向中小型企业设计的轻量级无 Agent 的自动化运维平台&#xff0c;整合了主机管理、主机批量执行、主机在线终端、文件…

halcon-轴断面检测定位

前言 通常情况下轴检测时&#xff0c;通常会检测轴的各个阶段的长度。但是由于各种原因&#xff0c;在轴断面的区域现实不明显&#xff0c;无法正确提取&#xff0c;这时候需要根据轴断面的突出部分进行检测&#xff0c;但是由于部分轴的粗轴和细轴区域的宽度差距相当接近&…

windows SDK编程 --- 第一个程序

一、基础知识 1.Unicode 和 ANSI 在 Windows 编程中&#xff0c;Unicode 和 ANSI 是两种不同的字符编码方法&#xff0c;它们用于定义如何在计算机中表示和存储字符数据。 ANSI ANSI&#xff08;American National Standards Institute&#xff09;编码是一种基于单字节的字符…

使用阿里云试用Elasticsearch学习:4. 聚合——2

近似聚合 如果所有的数据都在一台机器上&#xff0c;那么生活会容易许多。 CS201 课上教的经典算法就足够应付这些问题。如果所有的数据都在一台机器上&#xff0c;那么也就不需要像 Elasticsearch 这样的分布式软件了。不过一旦我们开始分布式存储数据&#xff0c;就需要小心…

Android 蓝牙开发与 12/S 系统适配

蓝牙通信方式 经典蓝牙&#xff08;Bluetooth Classic&#xff09;通信&#xff1a; 经典蓝牙通信通常用于在较短的距离内传输大量数据&#xff0c;例如音频流、文件传输等。在 Android 中&#xff0c;你可以使用 BluetoothAdapter 和 BluetoothSocket 类来建立经典蓝牙连接&am…

Vue的学习之旅-part6-循环的集中写法与ES6增强语法

Vue的学习之旅-循环的集中写法与ES6增强语法 vue中的几种循环写法for循环for in 循环 for(let i in data){}for of 循环 for(let item of data){}reduce() 遍历 reduce( function( preValue, item){} , 0 ) ES6增强写法 类似语法糖简写对象简写函数简写 动态组件中使用 <kee…

【面试笔记】项目经理常见面试题

1、项目经理的能力和职能&#xff1f; 作为一个项目经理&#xff0c;我的主要能力和职能包括以下几个方面&#xff1a; 项目规划与管理&#xff1a;根据项目需求制定详尽的项目计划&#xff0c;包括时间表、资源分配、预算控制以及风险管理计划。确保项目在预定时间内按照既定…

实现卡片中每一条数据key的右对齐

前言&#xff1a; 在公司里面导师要求实现了卡片&#xff08;公司使用的框架是react&#xff0c;卡片引用的ant-design-moble的组件&#xff09;的功能&#xff0c;每一条数据横向展示&#xff0c;但是数据的key要实现右对齐&#xff0c;经过不断的修改&#xff0c;最后总结结…

AI应用实战2:使用scikit-learn进行回归任务实战

代码仓库在gitlab&#xff0c;本博客对应于02文件夹。 1.问题分析 在此篇博客中我们来对回归任务进行实战演练&#xff0c;背景是直播带货平台的业绩预测。第一步&#xff0c;就是分析问题。 问题痛点&#xff1a; 在直播带货平台上&#xff0c;由于市场环境多变、用户行为复…

5 个让日常编码更简单的 Python 库

今天我们一起来研究一些非常有用的第三方模块&#xff0c;可以使得我们的日常编码变得更加简单方便 sh https://github.com/amoffat/sh 如果曾经在 Python 中使用过 subprocess 库&#xff0c;那么我们很有可能对它感到失望&#xff0c;它不是最直观的库&#xff0c;可能还有些…

ubuntu 更改 ssh 默认端口 22 以加固安全

出于加固安全考虑&#xff0c;一般公司会禁用 ssh 的 22 端口号&#xff0c;因此我们需要改为其他端口。 1、ssh 命令行登录 进入台式机&#xff0c;修改 /etc/ssh/sshd_config 文件中的 Port 配置行&#xff0c;将 22 改为 8022&#xff0c;保存修改后&#xff0c;重启 ssh 服…

Vue3点击事件实现使table中最后一列可编辑的同时,表格中的滚动条自动滚动到该列位置

这个小功能我大概花了小半天的时间才实现&#xff0c;所以无比痛恨给我提这个需求的人&#xff0c;还好最后没有放弃&#xff0c;谨以此博客作为记录我被迫走上前端之路的第n天&#xff01;&#xff01;&#xff01; 代码来自项目里面的一部分&#xff0c;所以可能有点乱#&…

作文笔记6 写作顺序

时间顺序 举例&#xff1a;清晨 中午 傍晚&#xff0c;一般用来写景物 空间顺序/游览顺序 上下左右&#xff0c;前后内外 事情发展顺序 故事一般按照该顺序&#xff0c;起因&#xff0c;经过&#xff0c;结果 逻辑顺序 事理说明文&#xff0c;比如说一个事物&#xff0c…

【汇编】存储器

存储器 计算机存储器可分为内部存储器&#xff08;又称内存或主存&#xff09;和外部存储器&#xff0c;其中内存是CPU能直接寻址的储存空间&#xff0c;由半导体器件制成 存储单元的地址和内容 计算机存储信息的基本单位是一个二进制位&#xff0c;一位可存储一个二进制数&…

企业利器大曝光:CRM系统功能剖析

企业存在的根本目标是吸引并留住顾客。为了能够追踪顾客的信息以及与他们保持联系&#xff0c;不论企业规模大小&#xff0c;都长期使用了多种传统的手工方式。——彼得德鲁克 CRM系统的功能有哪些&#xff1f;如何做客户管理一直是企业管理中的热门话题&#xff0c;CRM&#…

[大模型]Qwen1.5-7B-Chat-GPTQ-Int4 部署环境

Qwen1.5-7B-Chat-GPTQ-Int4 部署环境 说明 Qwen1.5-72b 版本有BF16、INT8、INT4三个版本&#xff0c;三个版本性能接近。由于BF16版本需要144GB的显存&#xff0c;让普通用户忘却止步&#xff0c;而INT4版本只需要48GB即可推理&#xff0c;给普通用户本地化部署创造了机会。&…

C语言——数据在内存中的存储

引言 数据是程序运行的核心。当我们用C语言编写程序时&#xff0c;我们实际上是在操纵内存中的数据。这些数据在内存中是如何储存的&#xff0c;今天我们就来学习这些内容。 基本数据类型 1.整型 int: 基本整型&#xff0c;通常占用4个字节 short: 短整型&#xff0c;通常占用…

图像处理特征提取

图像处理中的特征提取是指从图像数据中提取出具有区分性和代表性的特征&#xff0c;以用于图像分类、目标检测、图像匹配等任务。下面介绍几种常见的图像处理特征提取方法&#xff1a; 颜色特征&#xff1a;颜色是图像中最直观且重要的特征之一。常见的颜色特征提取方法包括颜色…

zustand状态库在react类组件中使用

如果想在React类组件中使用zustand状态管理库&#xff0c;可以在类组件中调用create函数创建一个状态store&#xff0c;并使用useStore钩子来访问和更新状态。虽然zustand通常与函数式组件一起使用&#xff0c;但也可以在类组件中使用。 以下是一个简单的示例&#xff0c;展示…

MS软件Perl脚本提能培训方案

热忱欢迎贵公司选派研发人员参加铜陵浩辰科技有限公司举办的《MS软件Perl脚本提能培训方案》&#xff0c;此次培训将特邀具有多年授课经验的老师主讲。 一、培训概述 本培训旨在提高学员Perl脚本编写能力&#xff0c;能实现自行编写脚本&#xff0c;提高Perl脚本进行高级分析…