设计并实现一个 TwoSum 的类,使该类需要支持 add 和 find 的操作。

add 操作 -  对内部数据结构增加一个数。
find 操作 - 寻找内部数据结构中是否存在一对整数,使得两数之和与给定的数相等。

示例 1:

add(1); add(3); add(5);
find(4) -> true
find(7) -> false
示例 2:

add(3); add(1); add(2);
find(3) -> true
find(6) -> false

在列表有序的情况下,可以使用双指针,时间为O(N),插入一个数字的时间为O(N)。

可以使用哈希表,查找的时间为O(N),插入时间为O(1)。

两种方法空间都是O(N)。

综上所述,没有排序的列表没有必要为了解题去排序。

设计此数据结构时,也是使用哈希表最好。

import java.util.HashMap;class TwoSum {private HashMap<Integer, Integer> countsMap;/** Initialize your data structure here. */public TwoSum() {countsMap = new HashMap<Integer, Integer>();}/** Add the number to an internal data structure.. */public void add(int number) {if (countsMap.containsKey(number))countsMap.replace(number, countsMap.get(number) + 1);elsecountsMap.put(number, 1);}/** Find if there exists any pair of numbers which sum is equal to the value. */public boolean find(int value) {for (Map.Entry<Integer, Integer> entry : countsMap.entrySet()) {int key = value - entry.getKey();if ((key == entry.getKey() && entry.getValue() > 1)|| (key != entry.getKey() && countsMap.containsKey(key))) {return true;}}return false;}
}/*** Your TwoSum object will be instantiated and called as such:* TwoSum obj = new TwoSum();* obj.add(number);* boolean param_2 = obj.find(value);*/

leetcode170. 两数之和 III - 数据结构设计相关推荐

  1. LeetCode 170. 两数之和 III - 数据结构设计(哈希map)

    文章目录 1. 题目 2. 解题 1. 题目 设计并实现一个 TwoSum 的类,使该类需要支持 add 和 find 的操作. add 操作 - 对内部数据结构增加一个数. find 操作 - 寻找 ...

  2. 力扣(leetcode)-1. 两数之和

    描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数组 ...

  3. 【leetcode】 算法题1 两数之和

    [leetcode] 算法题1 两数之和 问题   给定一个整数数组和一个目标值,找出数组中和为目标值的两个数. 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nums ...

  4. LeetCode 01两数之和02两数相加

    力扣 LeetCode01两数之和 LeetCode02两数之加 前言:第一次LeetCode打卡题解,前面组织的打卡活动从今天开始正式开始了,很多csdn和公众号小伙伴以及加入了,欢迎加入!详细看力 ...

  5. LeetCode刷题-两数之和(持续更新)

    文章目录 LeetCode 1. Two Sum (两数之和) 题目描述 样例 解题思路一(暴力法) 解题思路二(使用map) 前言:最近业余时间,一直在看LeetCode上面的题,上面有许多好的解题 ...

  6. LeetCode 01. 两数之和

    原题 分析: 1.根据题意,首先需要将要数据选择一个合适的 数据结构模型.  因为是对应相关联,所以我们选择unordered_map 2.因为是一组数,所以用数组 ,将数值与数组下标对应起来 3.已 ...

  7. python的return语句求两数之和_程序题(python解)

    PyCharm整理代码:Ctrl+Alt+l list行数:len(list) list列数:len(list[1]) 笔试常使用到的功能: 1.单独取出一长串字符中每个单独的字符: 输入'abcd' ...

  8. LeetCode题库整理【Java】—— 1两数之和

    LeetCode题库整理[Java] 1.两数之和 题目:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数.你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nu ...

  9. java 两数之差_1_两数之和(java)

    两数之和 问题描述: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数组中同一 ...

最新文章

  1. 面向对象的JavaScript编程
  2. java.lang.String_自己写的java.lang.String可以让jvm加载到吗?
  3. 一个不错的CSS DIV布局,DIV高度自适应
  4. 命令行下操作MySQL数据库,各种命令的使用入门示例。(附图)
  5. c语言怎么编程dll,【C语言】编写的DLL注入工具
  6. 启动hbase后hregionserver没有启动
  7. Toast.makeText(MainActivity.this, R.string.alert, Toast.LENGTH_SHORT).show(); 解释
  8. Android.mk文件官方使用说明
  9. 完全自定义TabBar(八)
  10. Mac切换英文大写,不能锁定,该如何解决
  11. 华为路由器第三方插件_为什么路由器不开 SSH 就等于失去了很多乐趣?
  12. 《数据挖掘概念与技术》学习笔记
  13. mysqld: [ERROR] Found option without preceding group in config file my.ini at line 1
  14. Apple个人开发者账号相关问题
  15. [附源码]Python计算机毕业设计Django大学生考勤管理系统论文
  16. python实现树莓派监控_树莓派上安装pyaudio 及 对声音实时监控
  17. 【电脑问题】win10系统
  18. .NET Core 用 Blazor 做 jmeter 系列视频
  19. Hive Full Join多个表与Union All多个表
  20. 计算机安装系统有哪些东西,重装系统电脑里的东西还有吗|电脑重装系统后原来的东西还在吗...

热门文章

  1. 基于python的个人博客系统的设计开题报告_个人博客设计实现开题报告
  2. python dataframe删除重复行_详解pandas使用drop_duplicates去除DataFrame重复项参数
  3. wordl流程图怎么写字_DLG的制作流程图
  4. 为Ubuntu安装build-essential软件包
  5. uniapp开发实例github_跨端开发痛点?送你一款Vue最流行的跨端框架——uni-app
  6. 【转】mysql 、oracle中char和varchar以及varchar2的区别
  7. iis到w3wp的数据流及工作原理
  8. mysql 第二大的数据_MYSQL – 从大表中的第二行中选择数据
  9. 正则表达式:匹配非0的整数和小数Double
  10. 死锁编码及定位分析(故障排查)