LeetCode算法题-Design HashSet(Java实现)

akshare 布林通道策略 import datetime import pandas as pd import backtrader as bt import matplotlib.pyplot as plt from datetime import datetime import matplotlib import akshare as ak %matplotlib inline class Boll_strategy(bt.Strategy): #自定义参数,每次买入1800手 params=(('size'. 阅读详情

这是悦乐书的第298次更新,第317篇原创

01 看题和准备

今天介绍的是LeetCode算法题中Easy级别的第166题(顺位题号是705)。不使用任何内建的hash表库设计一个hash集合,应包含以下功能:

add(value):向哈希集合中插入一个值。

contains(value) :返回哈希集合中是否存在这个值。

remove(value):将给定值从哈希集合中删除。如果哈希集合中没有这个值,什么也不做。

例如:

MyHashSet hashSet = new MyHashSet();
hashSet.add(1);
hashSet.add(2);
hashSet.contains(1); // 返回 true
hashSet.contains(3); // 返回 false (未找到)
hashSet.add(2);
hashSet.contains(2); // 返回 true
hashSet.remove(2);
hashSet.contains(2); // 返回 false (已经被删除)


注意:

  • 所有的值都在 [1, 1000000]的范围内。

  • 操作的总数目在[1, 10000]范围内。

  • 不要使用内建的哈希集合库。

本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。

02 第一种解法

利用数组,哈希集合里所有值都在 [1, 1000000]的范围内,用key当作数组下标,如果存入数key就使arrs[key]为1,用于判断哈希集合是否有该值。

    int arrs[]=new int[1000001];
    public MyHashSet() {

    }
    public void add(int key) {
        arrs[key]=1;
    }
    public void remove(int key) {
        arrs[key]=0;
    }
    public boolean contains(int key) {
        return arrs[key]==1;
    }

03 第二种解法

同第一种解法思路。

    boolean arrs[]=new boolean[1000001];
    public MyHashSet() {

    }
    public void add(int key) {
        arrs[key]=true;
    }
    public void remove(int key) {
        arrs[key]=false;
    }
    public boolean contains(int key) {
        return arrs[key]==true;
    }

04 第三种解法

使用ArrayList集合处理,调用它提供的api。

    private List<Integer> list = null;
    public MyHashSet() {
        list=new ArrayList<>();
    }
    public void add(int key) {
        list.add(key);
    }
    public void remove(int key) {
        for (int i = list.size() - 1; i >= 0; i--) {
            if (list.get(i) == key) {
                list.remove(i);
            }
        }
    }
    public boolean contains(int key) {
        return list.contains(key);
    }

05 小结

算法专题目前已日更超过四个月,算法题文章166+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。

以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

C++ (week6、7):Linux系统编程4:网络 Linux网络:计算机网络概述、TCP协议、Socket编程、IO多路复用机制(select、epoll)、HTTP协议、进程池、线程池、大文件网络传输问题 阅读详情

相关推荐

环境配置 |Jupyter lab/Jupyter Notebook 安装与设置

ipynb使用Jupyterlab/Jupyter Notebook 来编写程序时的文件,在使用时,可以现转换为标准的.py的python文件。

weixin_44649780的博客 5775

Java 学习之——哈希表 HashSet,HashMap+例题

HashSet和HashMap概念和部分方法解析。

LiangYiFei的博客 1059

Cisco Packet Tracer 7.3免登录技巧:3种方法快速跳过注册界面(附详细截图)

本文针对Cisco Packet Tracer 7.3启动时遇到的登录界面问题,提供了三种合法高效的解决方案。详细介绍了如何利用官方访客模式快速启动、注册思科账号实现一劳永逸登录,以及通过调整本地安装配置优化启动流程,帮助网络学习者与备考者绕过繁琐步骤,快速进入实验环境。

weixin_29305337的博客 745

LeetCode(705 & 706):设计哈希集合 & 设计哈希映射 Design HashSet & HashMap(Java)

2019.11.10 #程序员笔试必备# LeetCode 从零单刷个人笔记整理(持续更新) github:https://github.com/ChopinXBP/LeetCode-Babel 数据结构题,应知应会。 HashSet可以用二维数组进行动态开辟空间,避免直接开辟过大的一维数组造成资源浪费。 HashMap容量初始为16,需要考虑负载,一旦数量-容量比大于负载系数(0.75),进行...

NJU_ChopinXBP的博客 572

从S参数到SPICE模型:Cadence Sigrity Boardband SPICE完整使用指南

本文详细介绍了Cadence Sigrity Boardband SPICE工具的核心价值与完整使用流程。该工具通过矢量拟合算法,将复杂的多端口S参数文件转化为无源、紧凑且高精度的SPICE等效电路模型,从而极大提升时域仿真效率。指南涵盖了从数据导入、关键参数配置、模型精度验证到集成应用于PowerSI等系统级仿真的全步骤,是信号与电源完整性分析的必备利器。

defi6farmer的博客 435

FPGA实现高效数字下变频:CORDIC与CIC滤波器的Verilog优化设计

本文深入探讨了FPGA实现高效数字下变频的技术方案,重点介绍了CORDIC算法与CIC滤波器的Verilog优化设计。通过详细的算法原理分析、FPGA实现技巧和实战经验分享,展示了如何利用CORDIC的旋转运算替代乘法操作,以及CIC滤波器在降采样中的高效性能。文章还提供了完整的系统集成方案和资源优化策略,为无线通信和雷达信号处理领域的工程师提供了实用参考。

redis7keeper的博客 724

LeetCode|705. Design HashSet

705. Design HashSet Design a HashSet without using any built-in hash table libraries. To be specific, your design should include these functions: add(value): Insert a value into the HashSet.  cont...

jmu_sxc的博客 324

【5G全网建设】Option3X和Option2模式建安市、兴城市和四水市核心网、承载网网络设计与部署

拓扑规划: Option 3X网络拓扑图规划 Option 2网络拓扑图规划 设备部署: 建安市核心网 建安市承载中心机房 建安市骨干汇聚机房 建安市3区汇聚机房 建安市C站点无线机房 兴城市核心网 兴城市承载中心机房 兴城市骨干汇聚机房 兴城市2区汇聚机房 兴城市B站点无线机房 数据配置: 建安市核心网 建安市承载中心机房 建安市骨干汇聚机房 建安市3区汇聚机房 建安市C站点无线机房 兴城市核心网 兴城市承载中心机房 兴城市骨干汇聚机房 兴城市2区汇聚机房 兴城市B站点无线机房 业务调试

weixin_67183034的博客 8869

java hashset算法_LeetCode算法题-Design HashSet(Java实现)

这是悦乐书的第298次更新,第317篇原创 01 看题和准备今天介绍的是LeetCode算法题中Easy级别的第166题(顺位题号是705)。不使用任何内建的hash表库设计一个hash集合,应包含以下功能:add(value):向哈希集合中插入一个值。contains(value) :返回哈希集合中是否存在这个值。remove(value):将给定值从哈希集合中删除。如果哈希集合中没有这个值,什...

weixin_32797081的博客 202

SPI为什么不需要加上拉电阻

大家好,我是记得诚。I2C因为其开漏的结构,无法输出高电平,所以外部加上拉电阻。我们在使用SPI的时候,发现是不需要加上拉电阻的。主要因为SPI多为推挽的结构,推挽电路,高低电平都可以输出,所以外部不需要加上拉电阻。推挽电路可以用2个三极管或者2个MOS管搭建而成。

记得诚 2632

(五)深入理解蓝牙BLE之“Beacon包格式详解”

蓝牙Beacon格式详解 本文重点在结合Bluetooth官网spec和几个例子来使beacon帧格式更加容易被理解。 广播帧格式: 首先beacon是蓝牙BLE广播包的一种,蓝牙广播帧格式如下: PS:其实BLE数据帧除了报头字段和数据字段定义与广播帧不同之外,前导/接入地址/长度/校验格式均相同。 广播帧数据字段格式: 数据字段最长为37个字节:6个字节的广播设备地址 + 31个字节广播数据。 广播数据的格式如下:AD Structure1 +AD Structure2 + .....

1万+

[leetcode]705. Design HashSet

[leetcode]705. Design HashSet Analysis 年纪大了就会比较惜命~—— [ummmm~] Design a HashSet without using any built-in hash table libraries. To be specific, your design should include these functions: ...

weixin_32135877的博客 1311

37、OpenMP:并行编程的强大工具

本文详细介绍了 OpenMP 的核心功能和使用方法,包括执行环境例程、线程同步与协调机制,如关键区域、屏障、原子操作、归约子句、刷新构造和锁机制。此外,还提供了多个实践练习,涵盖矩阵乘法的并行实现、任务池与流水线模式的应用、读写锁的扩展与移植,以及客户端-服务器模式的实现与优化。通过这些内容,读者可以全面掌握 OpenMP 在并行编程中的实际应用与性能优化技巧。

www00的博客 106

Design HashSet

Design a HashSetwithout using any built-in hash table libraries. To be specific, your design should include these functions: add(value):Insert a value into the HashSet. contains(value): Return whether the value exists in the HashSet or not. remove(...

leetcode 解题思路 241

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

LeetCode 705. Design HashSet (设计哈希集合)

题目标签:HashMap   题目让我们设计一个 hashset,有add,contains,remove 功能。   建立一个boolean array,index 是数字的值,具体看code。 Java Solution: Runtime: 58 ms, faster than 90.21% Memory Usage: 56.3 MB, less than 68.53% 完...

weixin_30340819的博客 107

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

LeetCode705. Design HashSet

题目  不使用任何内建的哈希表库设计一个哈希集合 具体地说,你的设计应该包含以下的功能 add(value):向哈希集合中插入一个值。 contains(value) :返回哈希集合中是否存在这个值。 remove(value):将给定值从哈希集合中删除。如果哈希集合中没有这个值,什么也不做。 示例: MyHashSet hashSet = new MyHashSet(); hash...

Lightmare625 304

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

LeetCode 705. Design HashSet

我们采用 LinkedList 实现 HashSet 中的桶。对于每个功能 add,remove,contains,我们首先生成桶的散列值,操作相对应的桶。 class MyHashSet { private Bucket[] bucketArray; private int keyRange; /** * Initialize your data structure here. */ public MyHashSet() { keyRange = 769;

qq_31361913的博客 155

[LeetCode] Design HashSet 设计HashSet

  Design a HashSet without using any built-in hash table libraries. To be specific, your design should include these functions: add(value): Insert a value into the HashSet.  contains(value) : Re...

weixin_34082177的博客 178

【leetcode】705. Design HashSet

题目:705. Design HashSet 设计HashSet,Set存的是值,而Map存的是键值对,首先要区别的是这一点。 Java中HashMap存储是通过,数组加链表的形式,数组可以认为是要存储的数被分到的大区间,而链表是为了解决哈希冲突的。这道题本来打算用Tire来做的得,但Tire查找时的时间复杂度为O(n),但HashSet查找的时间复杂度为O(1),用一个二维数组做即可。 先找到数...

很吵请安静 725

LeetCode 705:设计哈希集合 Design HashSet

LeetCode 705:设计哈希集合 Design HashSet 题目: 不使用任何内建的哈希表库设计一个哈希集合 具体地说,你的设计应该包含以下的功能 add(value):向哈希集合中插入一个值。 contains(value) :返回哈希集合中是否存在这个值。 remove(value):将给定值从哈希集合中删除。如果哈希集合中没有这个值,什么也不做。 Design a HashSe...

爱写Bug 444

使用ArrayList设计一个存储int类型的哈希集合【leetcode】 【705. Design HashSet】

不使用任何内建的哈希表库设计一个哈希集合 具体地说,你的设计应该包含以下的功能 add(value):向哈希集合中插入一个值。 contains(value) :返回哈希集合中是否存在这个值。 remove(value):将给定值从哈希集合中删除。如果哈希集合中没有这个值,什么也不做。 示例: MyHashSet hashSet = new MyHashSet(); hashSet.add(1)...

sim_yoo的博客 1099

leetcode705-Design HashSet

void remove(key) 将给定值 key 从哈希集合中删除。或者换一个思路,我们可以直接用位来表示,数字/32表示数组的索引,数字%32表示所在的位。这道题目要求模拟一个hashset,我们最直接的思路就是用一个数组,元素值表示数组下标。// 返回 False ,(未找到)myHashSet.contains(2);// 返回 False ,(已移除)bool contains(key) 返回哈希集合中是否存在这个值 key。void add(key) 向哈希集合中插入值 key。

我的程序人生 264

leetcode刷题937-13 | Design HashSet

目录   问题描述 示例 感想 代码 时间复杂度比较 问题描述 设计一个不使用任何内置哈希表库的哈希集。 实现以下功能: 1.插入操作 2.移出操作 3.判断操作(判断是否含有关键字) 示例 MyHashSet hashSet = new MyHashSet(); hashSet.add(1); hashSet.add(2); hashSet.contains(1); /...

kaimingD的博客 360

LeetCode(Linked List)705. Design HashSet

LeetCode(Linked List)705. Design HashSet

weixin_45428910的博客 177

Leetcode 355. Design Twitter 实现一个Twitter系统 解题报告

1 解题报告首先,手受伤了,不太方便打字,少打一些这道题是说设计一个简单的推特系统,能够发推特,关注人,取消关注人,以及获取最近10条消息,这里我说下每个点的要点:1、发推特:需要记录一个时间戳,为了维护方便,这里我用了自定义的一个类来表示一条推特,不然数据不容易看,也不容易计算。。2、关注人:小心重复关注,所以一定要使用HashSet或HashMap,当然如果你用List那就要不断检查重复了,不值

MebiuW的专栏 3586

Leetcode - Two Sum III - Data Structure Design

[分析] find的version1 版本注意num2Occur 需定义为Integer类型,建议version2版本 [ref] [url]https://leetcode.com/discuss/19515/my-solutions-java-and-python-time-for-add-time-for-find-space[/url] [code="java"] pub...

iteye_17352的博客 136
上一篇: LeetCode算法题-Binary Search(Java实现)
下一篇: LeetCode算法题-Design HashMap(Java实现)
程序员小川
博客等级 码龄10年 47粉丝 305原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值