文章目录

  • 1. 题目
  • 2. 解题
    • 1. 暴力解法
    • 2. 哈希法
    • 3. python3解答

1. 题目

题目链接:https://leetcode-cn.com/problems/two-sum/

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

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

2. 解题

1. 暴力解法

每个元素都跟后面的比较,n2 复杂度

class Solution
{public:vector<int> twoSum(vector<int>& nums, int target) {int i,j;vector<int> ans;for(i = 0; i < nums.size()-1; ++i){for(j = i+1; j < nums.size(); ++j){if(nums[i]+nums[j] == target){ans.push_back(i);ans.push_back(j);return ans;}}}return ans;}
};

2. 哈希法

利用unordered_map哈希查找,先建立哈希表O(n),再查找O(n)

//哈希法
class Solution
{public:vector<int> twoSum(vector<int>& nums, int target) {int i, d;vector<int> ans;unordered_map<int,int> unomap;//unordered_map是哈希表for(i = 0; i < nums.size(); ++i)//建立哈希表unomap[nums[i]] = i;//哈希数组下标是值,存的原来的下标for(i = 0; i < nums.size(); ++i){d = target - nums[i];if(unomap.find(d) != unomap.end() && unomap[d]>i){//如果查找到了,且不是同一个元素ans.push_back(i);ans.push_back(unomap[d]);break;}}return ans;}
};
  • 优化,只需要一次遍历
class Solution { // 2020.10.3
public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int,int> m;int number;for(int i = 0; i < nums.size(); ++i){number = target-nums[i];if(m.find(number) != m.end())return {i, m[number]};m[nums[i]] = i;}return {};}
};

3. python3解答

class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:dic = {}for i in range(len(nums)):dic[nums[i]] = ifor i in range(len(nums)):if (target-nums[i]) in dic and dic[target-nums[i]] > i:return [i,dic[target-nums[i]]]return [-1,-1]


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 1. 两数之和(哈希)相关推荐

  1. [leetcode]1.两数之和 + 哈希表:梦开始的地方,英语的abandon

    方案一:暴力题解没什么可说的,当然不是面试官想看到的 复杂度分析 时间复杂度:O(N^2),其中 N是数组中的元素数量.最坏情况下数组中任意两个数都要被匹配一次.空间复杂度:O(1). 方案二:直白来 ...

  2. [leetcode]1.两数之和

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

  3. LeetCode 1. 两数之和

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

  4. [hashmap|空间换时间] leetcode 1 两数之和

    [hashmap|空间换时间] leetcode 1 两数之和 1.题目 题目链接 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下 ...

  5. C/C++描述 LeetCode 167. 两数之和 II - 输入有序数组

    C/C++描述 LeetCode 167. 两数之和 II - 输入有序数组   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在 ...

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

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

  7. LeetCode 1. 两数之和【哈希表】

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

  8. 【前端来刷LeetCode】两数之和与两数相加

    大部分玩前端的小伙伴,在算法上都相对要薄弱些,毕竟调样式.调兼容就够掉头发的了,哪还有多余的头发再去折腾. 确实在前端中需要使用到算法的地方是比较少,但若要往高级方向发展,算法的基本功就非常重要啦.对 ...

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

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

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

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

最新文章

  1. 基于视角特征提取的3D检测方法汇总
  2. VS2015编译Boost1.64
  3. 一般入职体检都有哪些项目_单位常规体检一般都需要检查哪些项目?
  4. PHP文件上传【前后台编码】
  5. 手势模型和Angular Material的实现
  6. Demuxed:编解码器和压缩的未来
  7. [Silverlight]TextBlock控件全攻略
  8. leetcode 978. 最长湍流子数组(滑动窗口)
  9. Linux进程实践(5) --守护进程
  10. ICCV2021 2D和3D通用!新医疗影像自监督SOTA(代码已开源)
  11. zoj 2313 Chinese Girls' Amusement
  12. MYSQL - database 以及 table 的增删改查
  13. @babel/polyfill按需加载
  14. rv1126+imx307/335/415公板使用总结
  15. 业界最年轻的领军人物--久其总工程师欧阳曜
  16. ADB介绍—— 配置ADB环境变量
  17. Docker安装mysql:Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in use
  18. RISC-V MCU低功耗场景的应用分析
  19. 一键修复wpcap.dll文件丢失或出错
  20. ES6 — ES11 新特性一篇通

热门文章

  1. linux 多个秘钥,linux管理多个ssh公钥密钥
  2. ue4集合类型_UE4粒子系统渲染管线概述
  3. 动态载入树 (ASP+数据库)
  4. 个人管理 - 书籍推荐(待读)
  5. Java连载1-概述常用的dos命令
  6. SpringBoot整合Mybatis-plus实现增删查改
  7. [原创]K8 cping 3.0大型内网渗透扫描工具
  8. 树莓派安装CentOS
  9. 【转】JMeter学习(十三)分布式部署
  10. gojs 部分功能实现