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

news/2023/6/8 0:12:14

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

领扣 两数之和 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 对象 SitesHashMap<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) {// 创建一个 HashMapHashMap<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 heremap.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两个方法。

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

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

机械键盘 单个按键不灵 修理

故障描述&#xff1a;【键盘 h 键 按10次大概触发 3次】 削扁牙签&#xff1a; 拔键&#xff1a; 沾酒精&#xff1a; 捅十几次&#xff1a; 测试&#xff1a; 测试机械键盘按键succeed & end

微软键盘失灵怎么办

日常使用电脑的过程中&#xff0c;难免会遇到这样那样的问题&#xff0c;比如微软输入法怎么卸载&#xff0c;鼠标失灵了。为了大家更好地操作电脑&#xff0c;今天小编要告诉大家的是微软键盘失灵的解决办法。 微软键盘失灵怎么办&#xff1a; 1&#xff0c;首先&#xff0c…

java实现简单的身份证验证

首先是要求 然后进行开发 首先验证格式是否正确&#xff0c;这里我采用正则表达式进行格式规范 String formatID "[0-9]{17}[a-z0-9]{1}";再进行验证日期存在 1.日期是否在今天之前 if ( year1 > gc.get(Calendar.YEAR)) {return false;}2.还有就是月份是否正…

前端验证身份证

export function checkIndentity(id) { // 1 "验证通过!", 0 //校验不通过 // id为身份证号码 var format /^(([1][1-5])|([2][1-3])|([3][1-7])|([4][1-6])|([5][0-4])|([6][1-5])|([7][1])|([8][1-2]))\d{4}(([1][9]\d{2})|([2]\d{3}))(([0][1-9])|([1][0-2]))(…

Git进阶:修改上次提交 git commit --amend

一、问题说明 git commit 后&#xff0c;发现刚才的备注写错了&#xff0c;或者代码漏掉了&#xff0c;这时我们肯定是想取消刚才的提交。此刻有两种方法 &#xff08;1&#xff09;使用git reset命令将刚才的提交会退掉。需要注意的是git reset --soft 和git reset --hard的区…

超级详细的IDC搭建教程

超级详细的IDC搭建教程 一、准备工作 1.下载SWAPIDC系统 2.N台搭建idc的服务器&#xff08;提示&#xff1a;推荐使用国外服务器&#xff0c;也可以在腾讯云&#xff0c;阿里云&#xff0c;景安等平台购买&#xff01;&#xff09; 3.一台搭建销售idc平台的虚拟主机或服务器 …

云服务主要分为哪几类,云计算和IDC对比,有什么不同?

云软件基础设施层&#xff08;IaaS&#xff09;该层为高层提供基础性资源&#xff0c;可以组成新的云软件环境或者应用。提供云服务分为三类&#xff1a;计算资源、数据存储和通信设施。 计算资源&#xff1a;给云用户提供虚拟机。 数据存储&#xff1a;允许用户在远程硬盘上…

UTC-5 EST 是哪儿的时间

UTC -5 北美东部标准时间 &#xff08;EST&#xff09; 西五区&#xff0c;西5时区 —— 时间网