leetcode 1. 两数之和 思考分析
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. 两数之和 思考分析相关推荐
- LeetCode 18. 四数之和 思考分析(双指针解)
目录 需要注意的几点 1.去除剪枝操作 2.去重操作的细节 code以及效果: 题目 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b, ...
- LeetCode 15. 三数之和 思考分析(双指针解)
目录 初解:未考虑去重 二解:未考虑去重位置 三解:AC 题目: 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找 ...
- [leetcode]1.两数之和
[leetcode]1.两数之和 题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应 ...
- [hashmap|空间换时间] leetcode 1 两数之和
[hashmap|空间换时间] leetcode 1 两数之和 1.题目 题目链接 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下 ...
- C/C++描述 LeetCode 167. 两数之和 II - 输入有序数组
C/C++描述 LeetCode 167. 两数之和 II - 输入有序数组 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在 ...
- LeetCode 1. 两数之和
LeetCode 1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入 ...
- LeetCode 01两数之和02两数相加
力扣 LeetCode01两数之和 LeetCode02两数之加 前言:第一次LeetCode打卡题解,前面组织的打卡活动从今天开始正式开始了,很多csdn和公众号小伙伴以及加入了,欢迎加入!详细看力 ...
- 【前端来刷LeetCode】两数之和与两数相加
大部分玩前端的小伙伴,在算法上都相对要薄弱些,毕竟调样式.调兼容就够掉头发的了,哪还有多余的头发再去折腾. 确实在前端中需要使用到算法的地方是比较少,但若要往高级方向发展,算法的基本功就非常重要啦.对 ...
- leetCode:twoSum 两数之和 【JAVA实现】
LeetCode 两数之和 给定一个整数数组,返回两个数字的索引,使它们相加到特定目标. 您可以假设每个输入只有一个解决方案,并且您可能不会两次使用相同的元素. 更多文章查看个人博客 个人博客地址:t ...
最新文章
- 算法笔记-桶排序代码与原理、非比较排序、计数排序、基数排序、C#代码
- MySQL 8.0 可以操作 JSON 了,牛!
- Java SE 6 新特性 Instrumentation 新功能
- 银行有没有可能把800元存款打成80万?如果发生该怎么办?
- DirectX11中XNA数据库常见的几个函数
- tensorflow的数据输入
- sequelize怎么看插入的数据成功不成功_MySQL的4种事务隔离级别你还不清楚吗?
- 特斯拉:在行驶20万英里后 其电动汽车电池仍有90%容量
- html下载文件和上传文件(图片)(java后台(HttpServlet))打开保存路径和选择文件录取+(乱码UTF-8)+包...
- Transact-SQL语言
- 未经许可,请勿擅自引用本博客内的原创作品
- 正元一卡通对接代码Webservice
- python实现简易聊天室程序
- 如何防止短信验证被盗刷
- iOS 初中级工程师简历指北
- C语言贪吃蛇游戏主要功能,C语言游戏-贪吃蛇
- 一位开发大神的“告别信”!
- ubuntu好用的输入法googlepinyin
- 行测-常识积累(2)
- 两线怎么接三线插座图_三孔插头怎么接线?两根线怎么接三孔插座?