中文题目:

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

你可以按任意顺序返回答案。

示例 1:

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
示例 2:

输入:nums = [3,2,4], target = 6
输出:[1,2]
示例 3:

输入:nums = [3,3], target = 6
输出:[0,1]

提示:

2 <= nums.length <= 10^3
-10^9 <= nums[i] <= 10^9
-10^9 <= target <= 10^9
只会存在一个有效答案

英文题目:

Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

You can return the answer in any order.

Example 1:

Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Output: Because nums[0] + nums[1] == 9, we return [0, 1].
Example 2:

Input: nums = [3,2,4], target = 6
Output: [1,2]
Example 3:

Input: nums = [3,3], target = 6
Output: [0,1]

Constraints:

2 <= nums.length <= 10^3
-10^9 <= nums[i] <= 10^9
-10^9 <= target <= 10 ^9
Only one valid answer exists.

解法1:暴力枚举

最容易想到的方法是枚举数组中的每一个数 x,寻找数组中是否存在 target - x。

当我们使用遍历整个数组的方式寻找 target - x 时,需要注意到每一个位于 x 之前的元素都已经和 x 匹配过,因此不需要再进行匹配。而每一个元素不能被使用两次,所以我们只需要在 x 后面的元素中寻找 target - x。

Demo:

class Solution {public int[] twoSum(int[] nums, int target) {for (int i = 0; i < nums.length - 1; i++) {for (int j = i + 1; j < nums.length; j++) {if (nums[j] == target - nums[i]) {return new int[] { i, j };}}}return null;}
}

解法2:哈希表

遍历数组 nums,i 为当前下标,每个值都判断hashtable中是否存在 target-nums[i] 的 key 值;
如果存在则找到了两个值,如果不存在则将当前的 (nums[i],i) 存入 hashtable 中,继续遍历直到找到为止。

输入:nums = [2,7,11,15], target = 22
输出:[0,1]

i=0,22-2=20不在hashtable中,[2,0]存进去;【2,0】
i=1,22-7=15不在hashtable中,[7,1]存进去;【2,0】【7,1】
i=2,22-11=11,不在hashtable中,[11,2]存进去;【2,0】【7,1】【11,2】
i=3,22-15=7,存在【7,1】

输出[1,3]

class Solution {public int[] twoSum(int[] nums, int target) {Map<Integer, Integer> hashtable = new HashMap<Integer, Integer>();for (int i = 0; i < nums.length; ++i) {if (hashtable.containsKey(target - nums[i])) {return new int[]{hashtable.get(target - nums[i]), i};}hashtable.put(nums[i], i);}return new int[0];}
}

附:

类型 占用存储空间 表数范围
byte 1字节=8bit位 -128 ~ 127
short 2字节 -2^{15} ~2 ^{15}-1
int 4字节 -2^{31} ~ 2 ^{31}-1 (约21亿)
long 8字节 -2^{63} ~ 2 ^{63}-1

LeetCode从读题到自闭:1. 两数之和相关推荐

  1. Leetcode python《热题 HOT 100》1. 两数之和

    Leetcode python 之 <热题 HOT 100>:https://leetcode-cn.com/problemset/hot-100/ 1. 两数之和 给定一个整数数组 nu ...

  2. LeetCode从读题到自闭:204. 计数质数

    题目:统计所有小于非负整数 n 的质数的数量 示例 1: 输入:n = 10 输出:4 解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 . 示例 2: 输入:n = 0 输出: ...

  3. LeetCode第 3 场双周赛(2019.6.29)第一题:小于 K 的两数之和

    5021. 小于 K 的两数之和 给你一个整数数组 A 和一个整数 K,请在该数组中找出两个元素,使它们的和小于 K 但尽可能地接近 K,返回这两个元素的和. 如不存在这样的两个元素,请返回 -1. ...

  4. 【手把手带你刷好题】—— 43.满足条件的两数之和(双指针、非力扣)

    [前言] 今天是刷题打卡第43天! 不好意思哈铁汁们,最近这几周要准备考试,博文更新的可能会不及时,但是一有时间笔者都会补上的哦,抱歉哈. 原题:满足条件的两数之和(双指针) 题目描述: 给定一个有序 ...

  5. Leetcode刷题第1题:两数之和(基于Java语言)

    ** Leetcode刷题第1题:两数之和(基于Java语言) ** 题目: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标 ...

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

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

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

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

  8. LeetCode题库第1题 两数之和

    两数之和 LeetCode题库第1题 两数之和 看到题,我就想到了暴力法: public int[] force(int[] nums,int target) {for (int i = 0; i & ...

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

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

最新文章

  1. 新时代大视频产业的底座,视频云创变了什么?
  2. 定义和使用含有泛型的类
  3. chromium 桌面_如何使用Chromium和PyInstaller将Web应用程序转换为桌面应用程序
  4. 使用CLONE TABLE方式实现同region不同可用区的MaxCompute
  5. 洛谷 P1074 靶形数独 Label:search 不会
  6. k8s高可用集群_搭建高可用集群(部署haproxy和安装docker以及其他组件)---K8S_Google工作笔记0056
  7. ppt设置外观样式_ppt怎么设置幻灯片的背景一样?
  8. 专访方志朋:2018年仍然是微服务飞速发展的一年
  9. Kafka运维大全来了!优化、监控、故障处理……
  10. 阿里巴巴国际站—产品运营工作台操作指南
  11. CHM格式打开以后无法显示解决
  12. 看看别人怎么学习的。
  13. a到z的ascii码值是多少_c语言 ASCLL码中 A~Z和a~z是多少
  14. iOS版本、iPhone版本、Xcode版本比对
  15. 计算到达18岁生日所经过的总天数
  16. 解决报错:Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to current location: “
  17. 性能测试指标及常用的监控工具
  18. python如何切换windows窗口_selenium+python 切换窗口的几种方法
  19. Auto MDI/MDI-X 简要说明及网线头线序
  20. JS实现抖音小姐姐表白源码

热门文章

  1. 阿里巴巴战略投资苏宁体育!
  2. 开启“互联网+”模式打造智能移动APP巡检系统
  3. Selenium滚动条window.scrollTo和window.scrollBy
  4. jenkins + Git 搭建持续集成环境
  5. python学习--创建模块
  6. rhcsa第二天笔记
  7. MINA,xSocket同样的性能缺陷及陷阱,Grizzly better
  8. sql 去除数据表中一列中字符串后边的空格...
  9. dboxShare企业文件共享网盘
  10. 计算机怎么弹出专业团队,2018年专业技术人员继续教育答案92分