题目链接:两数之和三-数据结构设计

领扣 两数之和 III-数据结构设计

  • 1、题目
  • 2、思路
  • 3、题解代码——Java版本


1、题目

描述
设计并且实现一个TwoSum类,需要支持如下操作:

  • add:把这个数添加到内部的数据结构中
  • find:是否存在任意一对数字之和等于这个数值。

样例

add(1);add(3);add(5);
find(4)//返回true
find(7)//返回false

2、思路

利用Java的HashMap,键值对形式保存添加该数值。

HashMap的put方法可以添加元素,例如下面的代码:

// 引入 HashMap 类      
import java.util.HashMap;

public class RunoobTest {
    public static void main(String[] args) {
        // 创建 HashMap 对象 Sites
        HashMap<Integer, String> Sites = new HashMap<Integer, String>();
        // 添加键值对
        Sites.put(1, "Google");
        Sites.put(2, "Runoob");
        Sites.put(3, "Taobao");
        Sites.put(4, "Zhihu");
        System.out.println(Sites);
    }
}

HashMap是一个散列表,存储的内容就是键值对(key-value)映射。

其次:find可以通过遍历map,利用HashMap的API的getOrDefault() 方法,该方法可以获取指定key对应的value,如果找不到key,则返回默认的默认数值containsKey该方法就是审查map中是否存在指定key对应的映射关系,如下示例代码:

import java.util.HashMap;

class Main {
    public static void main(String[] args) {
        // 创建一个 HashMap
        HashMap<Integer, String> sites = new HashMap<>();

        // 往 HashMap 添加一些元素
        sites.put(1, "Google");
        sites.put(2, "Runoob");
        sites.put(3, "Taobao");
        System.out.println("sites HashMap: " + sites);

        //检查 key 为 1 是否存在
        if(sites.containsKey(1)) {
            System.out.println("key 为 1 存在于 sites 中");
        }

    }
}

3、题解代码——Java版本

public class TwoSum {
    HashMap<Integer, Integer> map;

    public TwoSum() {
 		// 构造方法实例化
        map = new HashMap<>();
    }

    /**
     * @param number: An integer
     * @return: nothing
     */
    public void add(int number) {
        // write your code here
        map.put(number, map.getOrDefault(number, 0) + 1);
    }

    /**
     * @param value: An integer
     * @return: Find if there exists any pair of numbers which sum is equal to the value.
     */
    public boolean find(int value) {
        // write your code here
        // a = c + b || b = a - c 类似理解
        int diff;
        for (int num : map.keySet()) {
            diff = value - num;
            if (map.containsKey(diff)) {
                if (diff != num || map.get(diff) > 1) {
                    return true;
                }
            }
        }
        return false;
    }
}

注意:该题主要涉及Java的HashMap应用和关键API-containsKey 以及 getOrDefault两个方法。

LintCode 607 · 两数之和 III-数据结构设计

相关文章

  1. C++初阶--模板

    目录 非类型模板参数 模板的特化 什么是特化 函数模板特化 类模板特化 全特化 偏特化 模板分离编译 什么是分离编译 为什么模板不支持分离编译 解决方法 模板的优点和缺陷 非类型模板参数 类型形参&#xff1a;出现在模板参数列表中&#xff0c;跟在class或者typename之类的…...

    2023/6/3 11:19:19
  2. 【shell教程】| 简介及基本使用案例

    文章目录一、简介二、脚本1 格式2 执行方式3 变量自定义变量特殊变量4 运算符5 条件判断6 流程控制1 if判断2 case语句3 for循环4 while 循环七、read读取控制台输入八、函数1 basename2 dirname3 自定义函数九、正则表达式十、文本处理工具1 cut2 grep3 sed4 awk一、简介 常见…...

    2023/4/30 5:17:20
  3. 离散数学-集合论-函数(10)

    函数 1 函数的概念 1.1 函数的定义 设&#x1d453;是非空集A到B的关系, 如果对每个&#x1d465;∈A, 都存在唯一的&#x1d466;∈B, 使得<&#x1d465;, &#x1d466;>∈&#x1d453;, 则称关系&#x1d453;为A到B的函数(Function), 也可称为映射(Mapping)或变…...

    2023/4/24 20:01:55
  4. K8s可视化界面Kubernetes DashboardKuboard

    目录一、简介二、Kubernetes Dashboard2.1 部署dashboard2.2 访问UI2.3 创建访问账号三、Kuboard3.1 部署2.2 访问UI一、简介 本文给大家介绍两个K8s集群的可视化工具 Kubernetes Dashboard 和 Kuboard 二、Kubernetes Dashboard 2.1 部署dashboard dashboard Github地址&a…...

    2023/5/17 9:58:10
  5. FITC-PEG-DBCO,Fluorescein-PEG-DBCO,荧光素-PEG-DBCO

    FITC-PEG-DBCO&#xff0c;DBCO-PEG-FITC&#xff0c;Fluorescein-PEG-DBCO&#xff0c;荧光素-聚乙二醇-二苯并环辛炔&#xff0c;荧光素-PEG-DBCO Product specifications&#xff1a; 1.CAS No&#xff1a;N/A 2.Molecular weight&#xff1a;1000&#xff0c;2000&#xff…...

    2023/4/29 5:09:20
  6. 2023-1-19 刷题情况

    强密码检验器 II 题目描述 如果一个密码满足以下所有条件&#xff0c;我们称它是一个 强 密码&#xff1a; 它有至少 8 个字符。 至少包含 一个小写英文 字母。 至少包含 一个大写英文 字母。 至少包含 一个数字 。 至少包含 一个特殊字符 。特殊字符为&#xff1a;“!#$%^&…...

    2023/6/7 16:39:23
  7. 手把手教你学51单片机-定时器与数码管

    逻辑运算 以下逻辑运算符都是按照变量整体值进行运算的,通常就叫做逻辑运算符: && 逻辑与。F = A && B,当 A、B 的值都为真(即非 0 值,下同)时,其运算结果 F 为真(具体数值为 1,下同);当 A、B 值任意一个为假(即 0,下同)时,结果 F 为假(具 体…...

    2023/5/9 12:30:28
  8. 使用OpenDDSDynamicData动态读取数据

    1 简介 为了适应功能需求的变化,可能需要更改数据分发服务(DDS)应用程序的DataReader和DataWriter用于彼此通信的数据类型data types。DDS-XTypes规范通过提供允许扩展数据类型的机制来满足这一需求,同时保持与目前定义的类型的兼容性。 使用DDS-XTypes,应用程序还可以读取…...

    2023/5/1 23:13:28
  9. 企业级Jenkins实践

    1. 概述2. Jenkins部署 2.1. Jenkins容器镜像构建2.2. 部署 3. 其他组件集成 3.1. sonarqube3.2. gitlab3.3. harbor 4. 构建运行时 4.1. 动态slave4.2. 定制化镜像4.3. pod启动加速 5. CI构建 5.1. 构建改造5.2. 缓存5.3. DID5.4. buildx5.5. DOCKER_BUILDKIT 6. 落地规划7. 附…...

    2023/6/1 7:32:18
  10. 【年度总结 | 2022】想干什么就去干吧,少年

    &#x1f935;‍♂️ 个人主页: 计算机魔术师 &#x1f468;‍&#x1f4bb; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 程序人生专栏 | 年度总结 &#xff08; 2022 &#xff09; 作者&#xff1a; 计算机魔术师 版本&#xff1a; 1.0 &#xff08…...

    2023/5/2 17:24:23
  11. Java 对象处理流(ObjectOutputStream\ObjectInputStream)

    文章目录前言什么是对象流&#xff1f;基本介绍ObjectOutputStreamObjectInputStream对象处理流的使用细节前言 处理流&#xff1a;是对一个已存在的流进行处理和封装&#xff0c;通过所封装的流的功能调用实现对数据的操作。而处理流中也有不同的分类&#xff0c;此片介绍的是…...

    2023/4/29 5:41:44
  12. SQL同时在线问题的解法

    前言 同时在线相关的问题&#xff0c;在很多行业中也经常出现&#xff0c;比如&#xff1a; 统计同时最大主播数量统计同时最大在线人数统计同时最大打车人数… 很多人看到这类题&#xff0c;一脸懵逼&#xff0c;甚至连题意都看不懂&#xff0c;但是这道题是面试题中的常客&a…...

    2023/6/4 14:34:24
  13. 28. 实战:基于selenium实现12306自动购票

    目录 前言 目的 思路 代码实现 1. 进入登录界面&#xff0c;输入账号密码 2. 点击登录按钮&#xff0c;完成滑块验证 3. 在个人中心点击购票&#xff0c;跳转 4. 输入出发地、目的地&#xff0c;从控制台输入得到 5. 文本框输入出发日 6. 若是学生票则切换票型 7. 点…...

    2023/4/27 14:10:02
  14. 数据分析-深度学习Pytorch Day6

    卷积神经网络如何运用到图片分类问题感受野 Receptive Field步长Stride填充Padding参数共享share parameter最大池化MaxPoolingCNN全过程仅个人理解学习引言CNN卷积神经网络最初主要是用于计算机视觉和图像处理中&#xff0c;比如图像分类&#xff1a;最终的分类数绝对维度&…...

    2023/5/12 19:57:56
  15. SpringBoot+VUE前后端分离项目学习笔记 - 【25 SpringBoot实现1对1、1对多、多对多关联查询】

    新增课程Course页面&#xff0c;实现学生选课功能、课程教授老师选择等功能 1. 课程与授课老师是一对一关系 因为course表仅记录了teacherid&#xff0c;而页面需要的是老师的名字 select course.*,sys_user.id from course left join sys_user **on ** course.teacher_id sys…...

    2023/5/22 16:48:16
  16. opencv的图像基本操作_3

    模板匹配 模板匹配和卷积很像&#xff0c;模板在原图像上滑动&#xff0c;并在滑过的区域上计算匹配数值&#xff0c;通过匹配数值衡量模板匹配程度&#xff0c;opencv中有6种计算方法&#xff0c;从原点开始计算&#xff0c;将每次计算的结果放到一个矩阵&#xff0c;最后输出…...

    2023/4/28 1:01:20
  17. 阻塞队列-DelayQueue详解

    一、DelayQueue介绍DelayQueue 是一个支持延时获取元素的阻塞队列&#xff0c; 内部采用优先队列 PriorityQueue 存储元素&#xff0c;同时元素必须实现 Delayed 接口&#xff1b;在创建元素时可以指定多久才可以从队列中获取当前元素&#xff0c;只有在延迟期满时才能从队列中…...

    2023/4/30 7:09:37
  18. 【手写 Vue2.x 源码】第三十一篇 - diff算法-比对优化(下)

    一&#xff0c;前言 上篇&#xff0c;diff算法-比对优化&#xff08;上&#xff09;&#xff0c;主要涉及以下几个点&#xff1a; 介绍了如何进行儿子节点比对&#xff1b;新老儿子节点可能存在的3种情况及代码实现&#xff1b;新老节点都有儿子时的 diff 方案介绍与处理逻辑…...

    2023/4/29 0:10:06
  19. 小侃设计模式(廿二)-访问者模式

    1.概述 访问者模式&#xff08;Visitor Pattern&#xff09;指的是在类的内部结构不变的情况下&#xff0c;不同的访问者访问这个对象都会呈现出不同的处理方式。它的主要作用时将数据结构与数据操作分离&#xff0c;将不同的算法与其所作用的对象进行分离。本文将详述访问者模…...

    2023/4/29 5:41:44
  20. Linux的ZONE_DMA,ZONE_NORMAL,ZONE_HIGHMEM及分配页释放页函数的简单介绍

    Linux的ZONE_DMA&#xff0c;ZONE_NORMAL,ZONE_HIGHMEM及分配页释放页函数的简单介绍简单介绍一下页&#xff1a;Linux 区&#xff1a;分配页系统调用释放页系统调用简单介绍一下页&#xff1a; 内核把物理页作为内存管理的基本单位。 尽管处理器的最小可寻址单位通常为字(甚至…...

    2023/4/29 5:41:52

最新文章

  1. 大学生网络工程想走网络安全方向该怎么规划?

    明确需求,确定方向 网络安全 网络安全 是一个很广的概念&#xff0c;涉及的岗位也是非常多的&#xff0c;有安全服务、安全运维、渗透测试、web安全、安全开发、安全售前等等。可以看看下面每个岗位的要求与自身兴趣能力匹配度再决定最适合自己的方向。 渗透测试/Web安全工程师…...

    2023/6/9 12:37:07
  2. 第七章 Electron Vue3实现音乐播放器

    一、介绍 &#x1f351; &#x1f351; &#x1f351; 一个音乐播放器应该具备播放、暂停、上一首、下一首、播放模式&#xff08;单曲循环、列表循环、顺序播放……&#xff09;。除了这些比如还可以扩展进度条的展示、拖拽、音量大小的调节&#xff0c;如果资源允许的话可以…...

    2023/6/9 12:36:47
  3. 【3步教程】如何使用商城小程序源码打造自己的商城?

    作为电商行业的领头人&#xff0c;在移动端上拥有一款独立小程序绝对是不能缺少的&#xff0c;而使用商城小程序源码打造自己的商城则是最佳的选择之一。本文将教您如何在3步之内&#xff0c;快速高效地使用商城小程序源码&#xff0c;打造属于自己的小程序商城。 步骤一&…...

    2023/6/9 12:35:47
  4. Netty核心源码剖析(四)

    1.Netty心跳(heartbeat)服务源码剖析 1>.Netty作为一个网络框架,提供了诸多功能,比如编码解码等,Netty还提供了非常重要的一个服务–心跳机制heartbeat.通过心跳检查对方是否有效,这是RPC框架中是必不可少的功能.下面我们分析一下Netty内部心跳服务源码实现; 2>.Netty提…...

    2023/6/9 12:35:17
  5. 【算法基础】拓扑排序及实战

    一 、概览 这里涉及到图的概念&#xff0c;感兴趣的同学请移驾 –>图<– 下面还有两个相关概念&#xff0c;大概说一下&#xff1a; 1.1 有向无环图 定义&#xff1a;在图论中&#xff0c;如果一个有向图从任意顶点出发无法经过若干条边回到该点&#xff0c;则这个图是…...

    2023/6/9 12:34:56
  6. 05_MySQL索引优化

    四种&#xff1a;1.主键 2.单值 3.唯一 4.复合 1. 性能分析&#xff08;explain&#xff09; mysql5.6以后优化器做了很多改进&#xff0c;执行时会自动进行大量的优化&#xff0c;很多现象需要在5.5才能演示成功。 1.1 explain是什么? 模拟优化器查看执行计划 使用EXPLAIN关…...

    2023/6/9 12:34:44
  7. 从零开始的软路由之爱快虚拟机搭建openwrt

    缘起 上篇文章我们介绍了爱快软路由的搭建方法&#xff0c;成功了实现了软路由的初级布置——能上网了。接下来就是搭建双软路由中的另一个openwrt了&#xff0c;上期介绍了爱快的特点&#xff0c;主要是用来多拨&#xff0c;分流&#xff0c;流控等操作&#xff0c;在这些方面…...

    2023/6/9 12:32:28
  8. 【matlab数学建模】运用建立的模型分别为这四组游客设计旅行计划

    目前的规划是每一次旅行都是从最开始的下水点出发到最终的结束点,开始点到结束 点的河流长度为225公里,且是顺流而下的。游客可选择的交通工具总共有两种,一种是 平均4公里每小时的脚踏公园游船,另-种是平均8公里每小时的螺旋桨电动游船。整个 漂流旅行的总时长从6到18个夜…...

    2023/6/9 12:31:55
  9. 《Kali渗透基础》06. 主动信息收集(三)

    kali渗透 1&#xff1a;服务识别1.1&#xff1a;NetCat1.2&#xff1a;Socket1.3&#xff1a;dmitry1.4&#xff1a;nmap 2&#xff1a;操作系统识别2.1&#xff1a;Scapy2.2&#xff1a;nmap2.3&#xff1a;p0f 3&#xff1a;SNMP 扫描3.1&#xff1a;onesixtyone3.2&#xff…...

    2023/6/9 12:31:10
  10. 【Flutter】widgets (6) Stateful Widget 有状态组件的生命周期

    文章目录 一、前言二、StatefulWidget的生命周期三、State对象的生命周期四、initState(), didUpdateWidget(), dispose()方法的用途五、StatefulWidget和State对象的生命周期六、代码示例七、总结一、前言 在上一篇文章中,我们初步认识了什么是Stateful Widget 有状态组件。…...

    2023/6/9 12:30:58
  11. SpringBoot resolveMultipart.getFile为null异常报空问题的解决办法

    使用 MultipartHttpServletRequest resolveMultipart commonsMultipartResolver.resolveMultipart(request); 出现 resolveMultipart.getFile("file"); 打印null&#xff0c;无法获取文件参数 CommonsMultipartResolver commonsMultipartResolver new CommonsMu…...

    2023/6/9 12:30:30
  12. 智慧园区物业可视化大屏

    随着万物互联、数字信息时代的到来&#xff0c;也给物业园区管理行业带来变革性影响。 园区作为城市的基本组成单元&#xff0c;是人口和产业的重要聚集区&#xff0c;现已逐渐成为中国经济转型升级和创新发展的主力。 智慧园区物业可视化整合园区现有信息系统的数据资源&#…...

    2023/6/9 12:30:13
  13. 【算法与数据结构】206、LeetCode 反转链表

    文章目录 一、题目二、翻转链表双指针法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、翻转链表双指针法 思路分析&#xff1a;代码首先进行头结点合法性判断&#xff0c;如果是空链表或者仅有一个节点的链…...

    2023/6/9 12:30:01
  14. sql orderby 多条件查询

    在 SQL 中&#xff0c;可以使用 ORDER BY 子句进行排序&#xff0c;以对查询结果进行排序。同时&#xff0c;也可以使用多个排序条件&#xff0c;对查询结果进行更加精细的排序。多条件查询需要在 ORDER BY 后面添加多个排序条件&#xff0c;并使用逗号隔开。 例如&#xff0c…...

    2023/6/9 12:29:46
  15. 千人规模亚马逊云科技出海日将于6月9日开启,助推企业出海出圈

    向全球价值链上游奋进 中国企业增强国际竞争力的关键&#xff0c;是努力朝全球价值链上游奋进&#xff0c;发力技术出海。中国的出海新机遇&#xff0c;背后曾是疫情在全球按下数字互联和数字化升级的快进键&#xff0c;跨境电商、在线社交、移动支付、数字服务等数字经济迎来…...

    2023/6/9 12:29:22
  16. 这里推荐几个前端动图icon网站

    1. Loading.ioLoading.io 是一个免费的加载动效(Loading animations)图标库。它提供了多种风格的加载动效图标,包括 SVG、CSS 和 Lottie 动画格式。这些加载图标可以增强用户体验,为网站和应用程序添加更佳的视觉效果。 网站地址:loading.io - Your SVG GIF PNG Ajax Loading…...

    2023/6/9 12:28:50
  17. SHELL 脚本定期删除日志文件(日志定期清理)

    假设我们的应用每天会产生一个日志文件&#xff0c;但我们并没有对日志文件做任何归档处理&#xff0c;久而久之日积月累&#xff0c;就会将磁盘空间占满&#xff0c;从而影响系统的正常运行。 分析磁盘空间占用情况 #当前磁盘空间占用情况 df -h #当前目录文件大小列表 l…...

    2023/6/9 12:28:30
  18. 肾藏志

    出处 《黄帝内经》中多处明确提出 肾藏志 的说法,现举三例: 五脏所藏:心藏神 肺藏魄 肝藏魂 脾藏意 肾藏志 是谓五脏所藏 ( 素问宣明五气篇第二十三 ) 夫心藏神,肺藏气,肝藏血,脾藏肉,肾藏志,而此成形 ( 素问调经论篇第六十二 ) 肾藏精,精舍志 ( 灵枢本神第八 ) 何为志 通过《黄…...

    2023/6/9 12:27:38
  19. 概率论:方差、标准差、协方差、皮尔逊相关系数、线性相关

    方差和标准差&#xff1a; 一个随机变量&#xff0c;的值的变化程度可以用方差计算&#xff1a; &#xff1b;其中 是期望。 我们举个例子&#xff1a; 服从均一分布&#xff0c;取值为0.1&#xff0c;0.2&#xff0c;0.3&#xff0c;0.4&#xff0c;0.5 &#xff0c;每种值…...

    2023/6/9 12:27:23
  20. 每日算法(第十九期)

    先来回顾一下上期的问题及答案&#xff1a; 2023年6月8日 「整数转罗马数字」&#xff08;Integer to Roman&#xff09;。 以下是题目的描述&#xff1a; 罗马数字包含以下七种字符&#xff1a;I&#xff0c;V&#xff0c;X&#xff0c;L&#xff0c;C&#xff0c;D 和 M。 字…...

    2023/6/9 12:27:08