1、题目

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

2、思考分析

双for循环的时间复杂度O(n^2),而哈希法的时间复杂度为O(1),所以哈希法显然更有效。
这里我们使用map而不使用set、或者自构造数组。
数组与set的局限:

1、数组大小受到限制,如果元素较少,而哈希值太大会造成内存空间浪费
2、set是一个集合,里面放的元素只能是一个key,不能知道key所在的位置,也就是说我们只能知道key是否存在。
而这一题不经要判断y是否存在还要疾苦y的下标。
3、使用map可以同时保存key、value,类似于数组。我们可以用key保存数值,用value保存数值所在下标。

C++中map的有关用法可以参考这篇笔记:STL容器及其简单应用
这里我们选择unordered_map;
需要注意map.insert函数的用法;

map.insert(pair<int, int> (nums[i], i));

3、哈希法

class Solution {public:vector<int> twoSum(vector<int>& nums, int target) {int n = nums.size();unordered_map<int,int> map;for(int i=0;i<n;i++){auto iter = map.find(target-nums[i]);   //观察是否找到另外一个数//如果找到了if(iter !=map.end()){//iter.first:key  iter.second:下标return {i,iter->second};}map.insert(pair<int, int> (nums[i], i));}return {};}
};

leetcode 1. 两数之和 思考分析相关推荐

  1. LeetCode 18. 四数之和 思考分析(双指针解)

    目录 需要注意的几点 1.去除剪枝操作 2.去重操作的细节 code以及效果: 题目 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b, ...

  2. LeetCode 15. 三数之和 思考分析(双指针解)

    目录 初解:未考虑去重 二解:未考虑去重位置 三解:AC 题目: 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找 ...

  3. [leetcode]1.两数之和

    [leetcode]1.两数之和 题目 给定一个整数数组 nums 和一个整数目标值 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 1. 两数之和

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

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

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

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

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

  9. leetCode:twoSum 两数之和 【JAVA实现】

    LeetCode 两数之和 给定一个整数数组,返回两个数字的索引,使它们相加到特定目标. 您可以假设每个输入只有一个解决方案,并且您可能不会两次使用相同的元素. 更多文章查看个人博客 个人博客地址:t ...

最新文章

  1. 算法笔记-桶排序代码与原理、非比较排序、计数排序、基数排序、C#代码
  2. MySQL 8.0 可以操作 JSON 了,牛!
  3. Java SE 6 新特性 Instrumentation 新功能
  4. 银行有没有可能把800元存款打成80万?如果发生该怎么办?
  5. DirectX11中XNA数据库常见的几个函数
  6. tensorflow的数据输入
  7. sequelize怎么看插入的数据成功不成功_MySQL的4种事务隔离级别你还不清楚吗?
  8. 特斯拉:在行驶20万英里后 其电动汽车电池仍有90%容量
  9. html下载文件和上传文件(图片)(java后台(HttpServlet))打开保存路径和选择文件录取+(乱码UTF-8)+包...
  10. Transact-SQL语言
  11. 未经许可,请勿擅自引用本博客内的原创作品
  12. 正元一卡通对接代码Webservice
  13. python实现简易聊天室程序
  14. 如何防止短信验证被盗刷
  15. iOS 初中级工程师简历指北
  16. C语言贪吃蛇游戏主要功能,C语言游戏-贪吃蛇
  17. 一位开发大神的“告别信”!
  18. ubuntu好用的输入法googlepinyin
  19. 行测-常识积累(2)
  20. 两线怎么接三线插座图_三孔插头怎么接线?两根线怎么接三孔插座?

热门文章

  1. 阿里云mysql创建多个用户_阿里云MySQL创建指定用户访问指定表
  2. 微信小程序 request请求封装
  3. jQuery函数的等价原生函数代码示例
  4. JS原生方法实现jQuery的ready()
  5. HTMLCSS 问题
  6. Resource接口
  7. Bash 脚本 set 命令教程
  8. 小朋友排队|2014年蓝桥杯B组题解析第十题-fishers
  9. Delta DVP 系列 PLC 各装置 Modbus 地址
  10. win10 hyper-v 虚拟机ping不通宿主机问题