2024.4.14力扣每日一题——设计哈希集合
2024.4.14
- 题目来源
- 我的题解
- 方法一 链表数组
题目来源
力扣每日一题;题序:705
我的题解
方法一 链表数组
由于给定限制次数为10000,所以构造一个长度为10001的链表数组。对于add操作先看数组对应的位置是否为null或者为空,若是则直接加入,否则遍历整个链表看是否有与加入的值相同的元素。对于remove操作,先看数组对应的位置是否为null或者为空,若是则直接退出,否则遍历整个链表看是否有与加入的值相同的元素,若相同则删除对应的链表节点。对于contains操作,先看数组对应的位置是否为null或者为空,若是则直接返回false,否则遍历整个链表看是否有与加入的值相同的元素,若有直接返回true,否则返回false。
对于哈希函数的设计:取key对应的哈希值mod 10000
哈希冲突的解决:使用链地址法解决
class MyHashSet {class LinkedList{int val;LinkedList next;public LinkedList(){}public LinkedList(int v){val=v;}public int size(){LinkedList root=this;int sz=0;while(root!=null){sz++;root=root.next;}return sz;}}private LinkedList[] keys;int n=10001;public MyHashSet() {keys=new LinkedList[n];// Arrays.fill(keys,new LinkedList());}public void add(int key) {int index=myHash(key);// 节点为空if(keys[index]==null){keys[index]=new LinkedList(key);// 还未有元素}else if(keys[index].size()==0){keys[index].val=key;//已经有元素}else{LinkedList root=keys[index];if (root.val==key)return ;while(root.next!=null&&root.next.val!=key){root=root.next;}if(root.next==null)root.next=new LinkedList(key);}}public void remove(int key) {int index=myHash(key);// 节点为空 || 还未有元素if(keys[index]==null||keys[index].size()==0)return ;//已经有元素else{LinkedList root=keys[index];if(root.val==key){keys[index]=root.next;}else{while(root.next!=null&&root.next.val!=key){root=root.next;}if(root.next!=null)root.next=root.next.next;}}}public boolean contains(int key) {int index=myHash(key);// 节点为空 || 还未有元素if(keys[index]==null||keys[index].size()==0)return false;//已经有元素else{LinkedList root=keys[index];while(root!=null){if(root.val==key)return true;root=root.next;}return false;}}public int myHash(int key){int iHash=Integer.hashCode(key);return iHash%(n-1);}@Overridepublic String toString() {return Arrays.toString(keys);}
}
有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~
相关文章:
2024.4.14力扣每日一题——设计哈希集合
2024.4.14 题目来源我的题解方法一 链表数组 题目来源 力扣每日一题;题序:705 我的题解 方法一 链表数组 由于给定限制次数为10000,所以构造一个长度为10001的链表数组。对于add操作先看数组对应的位置是否为null或者为空,若是…...
SQL explain 显示子查询A类型为ALL怎么优化
当 SQL EXPLAIN 显示子查询 A 的类型为 ALL 时,这意味着数据库系统正在执行全表扫描,而不是使用索引来执行子查询。全表扫描可能会导致性能下降,特别是在大型表上。 为了优化这种情况,您可以考虑以下几点: 1. **索引…...
网络协议学习——IP协议
IP(Internet Protocol,互联网协议)是网络中最基本的协议之一,负责在互联网中进行数据包的传输。下面是对IP协议的详细讲解: IP协议的作用 IP协议是在网络层(第三层)上工作的协议,它的…...
MATLAB初学者入门(1)—— 基础知识和功能介绍
MATLAB(Matrix Laboratory)是一种用于数值计算、可视化以及编程的高性能语言环境。它广泛应用于工程、科学研究和教育等领域。以下是对MATLAB基础知识和编程技巧的系统性讲解,分为几个主要部分: 1. 基础操作 变量和表达式 在MAT…...
React Css 四种引入方式
React CSS 内联样式 优点 样式之间不会有冲突可以动态获取组件中state的值 缺点 要使用驼峰标识部分样式没有很友好的提示如果大量去写内敛样式 容易造成代码混乱伪类和伪元素无法编写 class HighCom extends PureComponent {constructor(props) {super(props)this.state…...
题目:输入3个数a,b,c,按大小顺序输出。
题目:输入3个数a,b,c,按大小顺序输出。 There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence. The blog content is all parallel goods. Those who are worried abou…...
AI预测体彩排3第3弹【2024年4月14日预测--第1套算法开始计算第3次测试】
今天咱们继续测试第1套算法和模型,今天是第3次测试,目前的测试只是为了记录和验证,不建议大家盲目跟买。我的目标仍旧是10次命中3-4次!~废话不多说了,直接上结果! 2024年4月14日排3的七码预测结果如下 第一套&…...
Android 在xml 布局中如何嵌套 Jetpack Compose
最近在项目开发的过程中需要用到 Jetpack Compose,之前没有接触过Compose,所以项目一直没有用到Compose。通过查看官网发现Compose上手比较快,但是准备比较复杂的布局要转换成Compose 不是一件容易的事情。那有没有可能只是对成熟的项目中的x…...
Spring Boot统一功能处理(一)
本篇主要介绍Spring Boot的统一功能处理中的拦截器。 目录 一、拦截器的基本使用 二、拦截器实操 三、浅尝源码 初始化DispatcherServerlet 处理请求(doDispatch) 四、适配器模式 一、拦截器的基本使用 在一般的学校或者社区门口,通常会安排几个…...
我与C++的爱恋:类与对象(二)
🔥个人主页:guoguoqiang. 🔥专栏:我与C的爱恋 本篇着重介绍构造函数和析构函数,剩余内容在下篇解答。 一、类的默认成员函数 如果一个类中什么成员都没有,简称为空类。 任何类在什么都不写时…...
BERT入门:理解自然语言处理中的基本概念
1. 自然语言处理简介 自然语言处理(Natural Language Processing,NLP)是人工智能领域的重要分支,涉及计算机与人类自然语言之间的相互作用。NLP 的应用已经深入到我们日常生活中的方方面面,如智能助理、机器翻译、舆情…...
Discoverydevice.java和activity_discoverydevice.xml
一、Discoverydevice.java public class Discoverydevice extends AppCompatActivity {private DeviceAdapter mAdapter2;private final List<DeviceClass> mbondDeviceList new ArrayList<>();//搜索到的所有已绑定设备保存为列表private final List<Devic…...
华为OD机试 - 最多颜色的车辆(Java JS Python C C++)
须知 哈喽,本题库完全免费,收费是为了防止被爬,大家订阅专栏后可以私信联系退款。感谢支持 文章目录 须知题目描述输入描述输出描述解析代码题目描述 在一个狭小的路口,每秒只能通过一辆车,假设车辆的颜色只有 3 种,找出 N 秒内经过的最多颜色的车辆数量。 三种颜色编…...
【无人机/平衡车/机器人】详解STM32+MPU6050姿态解算—卡尔曼滤波+四元数法+互补滤波——附3个算法源码
效果: MPU6050姿态解算-卡尔曼滤波+四元数+互补滤波 目录 基础知识详解 欧拉角...
NzN的C++之路--构造函数与析构函数
如果一个类中既没有成员变量也没有成员函数,这个类简称为空类。空类中其实并不是什么都没有,任何类在什么都不写时,编译器会自动生成6个默认成员函数。那今天我们就来学习一下其中两个默认成员函数:构造函数与析构函数。先三连后看…...
【算法刷题day24】Leetcode:216. 组合总和 III、17. 电话号码的字母组合
文章目录 Leetcode 216. 组合总和 III解题思路代码总结 Leetcode 17. 电话号码的字母组合解题思路代码总结 草稿图网站 java的Deque Leetcode 216. 组合总和 III 题目:216. 组合总和 III 解析:代码随想录解析 解题思路 回溯三部曲:确定递归…...
一体化泵站的生产制造流程怎样
诸城市鑫淼环保小编带大家了解一下一体化泵站的生产制造流程怎样 综合泵站和传统式混泥土泵站的一大差别是,离去制造厂前,能够开展全部机械设备设备的生产加工及零部件加工,随后运送到建筑项目当场开展安裝。这类经营方式缩短了开发周期&…...
【1】C++设计模式之【单例模式】
单例模式在C中的实现方式有以下几种: 懒汉式(线程不安全)饿汉式(线程安全)双检锁/双重校验锁(DCL,线程安全)静态局部变量(线程安全)C11版本(线程…...
软件设计模式之解释器模式
一、引言 在软件设计中,我们经常遇到需要“解释”和执行某种特定语法或语言的情况。这时,解释器模式就派上了用场。解释器模式(Interpreter Pattern)是一种行为设计模式,它提供了一种解释语言的语法并定义一个句子如何…...
java Web课程管理系统用eclipse定制开发mysql数据库BS模式java编程jdbc
一、源码特点 JSP 课程管理系统是一套完善的web设计系统,对理解JSP java 编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,eclipse开发,数据库为Mysql5.0,使用ja…...
SEO_避开这些常见误区让你的SEO效果事半功倍
<h2>SEO误区一:忽视关键词优化</h2> <p>在进行SEO优化时,关键词的选择和使用是至关重要的。很多人忽视了关键词优化,导致他们的网站在搜索引擎中的排名一直停滞不前。关键词不仅仅是为了让搜索引擎理解你的网站内容&#x…...
手把手教你用NOAA气象数据做可视化分析(含常见字段解析与避坑指南)
手把手教你用NOAA气象数据做可视化分析(含常见字段解析与避坑指南) 气象数据可视化是理解气候模式、分析极端天气事件的重要工具。美国国家海洋和大气管理局(NOAA)提供的全球历史气候网络日数据(GHCN-Daily࿰…...
Hugging Face Hub下载模型文件:hf_hub_download vs snapshot_download保姆级对比指南
Hugging Face Hub模型下载实战指南:hf_hub_download与snapshot_download深度解析 当你第一次在Python项目中集成Hugging Face模型时,是否曾被这两个看似相似的下载函数困扰过?作为Hugging Face生态中最常用的两个下载工具,hf_hub_…...
保姆级教程:在Jeecg-Vue3项目中快速集成SuperQuery高级查询组件(含完整配置代码)
Jeecg-Vue3项目实战:SuperQuery高级查询组件深度集成指南 在后台管理系统开发中,高效的数据筛选功能直接影响用户体验和操作效率。Jeecg-Vue3作为企业级快速开发框架,其内置的SuperQuery组件能够帮助开发者快速构建复杂的多条件查询面板。本文…...
一文讲透|一键生成论文工具:2026年最新测评与推荐大全
2026年真正好用的一键生成论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。…...
高效转换CSDN博客为Markdown:自动化工具与批量处理技巧
1. 为什么需要将CSDN博客转为Markdown格式 作为一个写了多年技术博客的老鸟,我深刻理解Markdown格式对技术写作的重要性。CSDN的富文本编辑器虽然方便,但存在几个致命问题:格式锁定在平台内、排版灵活性差、迁移成本高。而Markdown作为轻量级…...
瑞萨RA6E2评估板Keil MDK5开发全攻略:从RA Smart Configurator到烧录调试
瑞萨RA6E2评估板Keil MDK5开发全流程实战指南 对于嵌入式开发者而言,瑞萨RA6E2系列MCU凭借其高性能和丰富外设正成为工业控制、物联网终端设备的优选方案。而Keil MDK5作为Arm生态中最成熟的开发环境之一,与瑞萨官方工具链的深度整合为开发者提供了高效…...
塔罗牌选框架:准确率超机器学习模型
技术选型困境与创新突破在软件测试领域,技术栈选择一直是核心挑战。传统方法依赖历史数据和机器学习模型,但常陷入“预测陷阱”——过度依赖过往经验导致创新盲区。例如,自动化测试框架的错误选型每年造成巨额损失:38.7%源于技术生…...
vue新手福音:快马ai帮你秒建可运行环境,专注学习第一行代码
作为一个刚接触Vue的新手,最让我头疼的就是环境搭建。记得第一次尝试安装Node.js、配置npm、理解脚手架的时候,光是解决各种报错就花了大半天时间。直到发现了InsCode(快马)平台,才明白原来入门可以这么简单。 环境搭建的痛点 传统方式需要先…...
别再只会用IP核了!手把手教你用Verilog RTL代码实现一个简单的RAM(附仿真对比)
从寄存器阵列到存储矩阵:Verilog RTL实现RAM的底层逻辑与工程实践 在FPGA和数字IC设计中,RAM(随机存取存储器)如同数字世界的记事本,承载着数据暂存与交换的关键使命。许多工程师习惯于直接调用供应商提供的IP核&#…...
