1.题目描述(简单难度)

2.解法1(暴力枚举法)

思路:用两层for循环得到数组中所有两个数的组合,等于目标值即返回这两个数的下标

代码:

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

时间复杂度:两层for循环 O(n²)
空间复杂度:O(n)

解法2(哈希表)

思路:第一种方法的时间复杂度比较高的原因是使用了两层for循环,我们肯定会想能不能用一层for循环解决这个问题呢?

这个时候就要用到hashtable了,首先我们创建一个hashtable,键值分别为nums[i],i,遍历nums数组中的元素,如果在hashtable中存在target - nums[i],则返回查找到的下标和i,若不存在则把当前遍历到的nums[i]和i作为键值对添加到hashtable中,这样只需遍历一次就可以得到两个值为target的下标值了。

代码:

class Solution {public:vector<int> twoSum(vector<int>& nums, int target) {int len = nums.size();unordered_map <int,int> hashtable;for(int i = 0;i < len;i++){auto it = hashtable.find(target - nums[i]);if(it != hashtable.end())return {it->second,i};hashtable[nums[i]] = i;}return {};};
};

时间复杂度:一层for循环 O(n)
空间复杂度:创建hash表开销 O(n)
提示:这里用到了以空间换时间的思想

1.两数之和(leetcode-1)相关推荐

  1. 1.两数之和-LeetCode

    目录 一.问题描述 二.解题思想 三.解题 1.判断极端情况 2.代码实现 一.问题描述 这里直接采用的LeetCode上面的问题描述. 给定一个整数数组 nums 和一个整数目标值 target,请 ...

  2. 两数之和(LeetCode)

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

  3. 两数之和(LeetCode)——哈希表法(C语言)

    上一篇文章留了个引子--用"哈希表"法来解决这个问题. 今天,我们来解决一下.为什么用哈希表法?很简单因为它--快! 讲解之前我们先来提出几个问题? 1)什么是"哈希表& ...

  4. 用php求两数之和,Leetcode PHP 两数之和

    友情提示:此篇文章大约需要阅读 1分钟43秒,不足之处请多指教,感谢你的阅读. 题目 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的 ...

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

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

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

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

  7. 【LeetCode】两数之和、三数之和、四数之和系列

    文章目录 两数之和★ 三数之和★★ 四数之和★★ 四数相加Ⅱ★★ 最接近的三数之和★★ 此篇文章总结下力扣中的两数之和.三数之和.四数之和及一系列求数组中满足达到目标值的元组个数的问题,仔细阅读下面的 ...

  8. java 1099_【LeetCode(Java) - 1099】小于 K 的两数之和

    [LeetCode(Java) - 1099]小于 K 的两数之和 [LeetCode(Java) - 1099]小于 K 的两数之和 文章目录 1.题目描述 2.解题思路 3.解题代码 1.题目描述 ...

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

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

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

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

最新文章

  1. 服务器oracle11g卸载,卸载Oracle11g步骤详解
  2. mybaits十三:使用collection分布查询
  3. 透过认知智能剖析商业本质(iPIN CEO杨洋)丨硬创公开课
  4. 【目标检测】RCNN算法详解
  5. Linux中常用到的命令
  6. cmd命令启动mysql服务
  7. OpenCV极线epipolar lines的实例(附完整代码)
  8. Spring 核心和容器的一般更新
  9. 【常用模板】 01背包
  10. GBDT和LR结合使用分析
  11. win10死机频繁怎么解决
  12. URI Is Not Registered
  13. vue elementui表单清空前一次的数据
  14. 人工智能的变革趋势: 从弱人工智能到强人工智能,再到生物智能
  15. 不收费的数据恢复软件好用吗?数据丢失这样恢复
  16. 2023成都理工大学计算机考研信息汇总
  17. Python学习笔记4---类和对象
  18. App inventor打地鼠
  19. 远程控制桌面,外网电脑PC手机ios安卓mac远程桌面连接内网linux和windows主机,史上最全最详细图文教程
  20. matlab根据根求多项式,matlab求解多项式的根

热门文章

  1. django配置文件
  2. linux自动备份mysql数据库,并删除几天前数据库备份
  3. [转]自定义UITableView各种函数
  4. 游戏动画中欧拉角与万向锁的理解
  5. JavaScript43种常见的浏览器兼容性问题大汇总
  6. 阿里天池大赛实战记录之菜鸟-需求预测与分仓规划
  7. 使用Telnet客户端测试Exchange邮件收发
  8. __flash__removeCallback 未定义错误
  9. 打造基于hadoop的网站日志分析系统(5)之spark在日志分析系统里的简单应用
  10. [ERROR]-Error: failure: repodata/filelists.xml.gz from addons: [Errno 256] No more mirrors to try.