1. 两数之和

Ideas

算法:迭代
数据结构:哈希表

步骤:

  1. 依次遍历整个数组
  2. 因为我们要找到两个数加起来等于target,所以在处理每个元素的时候,可以用哈希表存下target - nums[i]的索引值
  3. 遍历的过程中,判断当前元素nums[i]是否已经存在于哈希表中
    3.1 如果存在,说明前面已经遍历过的某个元素跟当前元素nums[i]加起来等于target,直接return坐标
    3.2 如果不存在,继续遍历
  4. 如果整个数组遍历完了都没有return,说明没有满足条件的两个数,直接return空坐标

注意在代码实现的过程中,第2步要在第3步之后,因为如果nums[i]=target2nums[i]=\frac{target}{2}nums[i]=2target​,那么就会直接return {i, i},显然不符合题意要求。

Code

C++

#include <unordered_map>using namespace std;class Solution {public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int, int> hash_table;for (int i = 0; i < nums.size(); i++) {auto flag = hash_table.find(target - nums[i]);if (flag != hash_table.end()) {return {flag -> second, i};}hash_table[nums[i]] = i;     // 注意这行代码的位置,必须在 if 判断完之后执行 }return {};}
};

Python

from typing import Listclass Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:"""暴力枚举"""length = len(nums)for i in range(length):for j in range(i + 1, length):if nums[j] == target - nums[i]:return [i, j]def twoSum2(self, nums: List[int], target: int) -> List[int]:"""双通道哈希表"""length, values = len(nums), {}for i in range(length):values[nums[i]] = ifor i in range(length):complement = target - nums[i]# 如果补码在数列中并且索引不是自己if complement in values and values.get(complement) != i:return [i, values.get(complement)]def twoSum3(self, nums: List[int], target: int) -> List[int]:"""单次哈希表"""values = {}for index in range(len(nums)):if target - nums[index] not in values:# 如果目标值不在dict中,在dict中将当前值位置更新为索引values[nums[index]] = indexelse:# 如果目标值在dict中,则返回目标值在dict中的索引和当前值的索引return [values[target - nums[index]], index]

LeetCode Algorithm 1. 两数之和相关推荐

  1. LeetCode题 - 1 两数之和

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

  2. LeetCode:1.两数之和

    LeetCode:1.两数之和 第一次写题解,也第一次做leetcode,不妥之处还望海涵 一.暴力 //cpp class Solution {public:vector<int> tw ...

  3. 【Leetcode | easy】两数之和

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

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

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

  5. Leetcode 1:两数之和

    写在前面 Leetcode 社区挺神奇的,近几年火热程度不亚于开源社区github.做题一直以来是咱们亚洲人的强项,咋这香馍馍也被美国硅谷抢先了,着实香菇. 企于算法工程师的江湖地位和薪资福利,决定先 ...

  6. leetcode系列--1.两数之和

    leetcode 第1题 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输 ...

  7. [Leetcode]Two sum(两数之和)系列总结

    Two sum 题目 Given an array of integers, return indices of the two numbers such that they add up to a ...

  8. LeetCode 01【两数之和】【LeetCode人生第一题!】

    刷题官网:https://leetcode-cn.com/ 目   录 题目 官方题解 方法一:暴力法 方法二:两遍哈希表 方法三:一遍哈希表 初次提交 题目 官方题解 方法一:暴力法 暴力法很简单, ...

  9. 【LeetCode】1.两数之和

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

最新文章

  1. 用 Python 语言来写游戏
  2. 2018年房价到底会不会涨!
  3. pulsar常用命令
  4. 【超全指南】Java 8 中使用 Optional 处理 null 对象
  5. 简单配置nginx使之支持pathinfo
  6. OpenModelica 在特定目录下生成仿真结果文件
  7. 用C语言编译病毒,来来来,教你一个用C语言写个小病毒
  8. 2022年计算机二级考试Access数据库程序设计冲刺题及答案
  9. python中match方法_Python3.9.1中如何使用match方法?
  10. 百度相关搜索是怎么出现的如何利用
  11. Alert Log中“Fatal NI connect error 12170”错误
  12. 从JDBC到Mybatis
  13. PS 如何制作Vista的毛玻璃效果
  14. 第三方直播美颜SDK的美颜功能是怎么实现的?
  15. jsp网页嵌入PHP网页,JSP_(jsp/html)网页上嵌入播放器(常用播放器代码整理),这个其实很简单,只要在HTML上 - phpStudy...
  16. Biopython+python 自动化分析蛋白质pdb文件,输出id,序列以及作用位点
  17. 网络协议 -- ICMP协议(1) 报文格式
  18. 关于bootstrap-table冻结列生成多个冻结表头和表格主体的问题
  19. 静态HTML网页设计作品 代码质量好-上海介绍(5页) HTML+CSS+JavaScript(含源码)
  20. Flask框架——数据库操作命令(增删改查)

热门文章

  1. [转载]ASP.NET中IsPostBack详解
  2. 前后端分离+本地服务实时刷新+缓存管理+接口proxy+静态资源增量更新+各种性能优化+上线运维发布——gulp工作流搭建...
  3. 举例什么时候会用到 call(), apply()
  4. ATL dll注册失败
  5. 使用遥控器控制汽车,实现高难度的泊车(发明畅想)
  6. python对象模型映射_看例子,学 Python(三)
  7. python column stack_Python基础 | pandas中dataframe的整合与形变(merge reshape)
  8. 练习11.1 奥运五环色 7-1 藏头诗
  9. 7-1 数组元素循环右移问题 (20 分)
  10. python如何离线安装第三方模块_扣丁学堂python开发之第三方模块pip离线安装