两数之和

给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。
你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 1 到 n,不是以 0 开头。

注意事项

你可以假设只有一组答案。

样例

给出 numbers = [2, 7, 11, 15], target = 9, 返回 [1, 2].

挑战

Either of the following solutions are acceptable:

  • O(n) Space, O(nlogn) Time
  • O(n) Space, O(n) Time

标签

排序 哈希表 爱彼迎 数组 脸书 两根指针

方法一:暴力破解

时间复杂度O(n^2)

code

class Solution {
public:/** @param numbers : An array of Integer* @param target : target = numbers[index1] + numbers[index2]* @return : [index1+1, index2+1] (index1 < index2)*/vector<int> twoSum(vector<int> &nums, int target) {// write your code hereif(nums.empty())   {  return vector<int>();  } int len = nums.size();  vector<int> ret;  for(int i=0; i<len; ++i)   {  for(int j=i+1; j<len; ++j)   {  if(nums[i] + nums[j] == target)   {  ret.push_back(i+1);  ret.push_back(j+1);  return ret;  } }}return vector<int>();}
};

方法二:利用hash

时间复杂度O(n),空间复杂度O(n)

code

class Solution {
public:/** @param numbers : An array of Integer* @param target : target = numbers[index1] + numbers[index2]* @return : [index1+1, index2+1] (index1 < index2)*/vector<int> twoSum(vector<int> &nums, int target) {// write your code hereint size = nums.size();int i = 0;vector<int> result;if(size <= 0) {return result;}map<int, int> hashMap;for(i=0; i<size; i++) {hashMap.insert(pair<int, int>(nums[i], i));}for(i=0; i<size; i++) {int temp = target - nums[i];if (hashMap.count(temp)!=0 && hashMap[temp]!=i) {result.push_back(i+1);result.push_back(hashMap[temp]+1);break;}}if(result[0] > result[1]) {int temp = result[0];result[0] = result[1];result[1] = temp;}return result;}
};

转载于:https://www.cnblogs.com/libaoquan/p/6808064.html

LintCode-56.两数之和相关推荐

  1. 领扣LintCode算法问题答案:56. 两数之和

    56. 两数之和 描述 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target. 你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标.注意这里下标的范围是 ...

  2. Lintcode--2(56)--两数之和

    题目:给一个整数数组,找到两个数使得他们的和等于一个给定的数 target. 你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标.注意这里下标的范围是 0 到 n-1. ...

  3. LeetCode/LintCode 题解丨一周爆刷双指针: 两数之和

    描述 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target. 你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标.注意这里下标的范围是 0 到 n-1. ...

  4. 【算法】哈希表 ( 两数之和 )

    算法 系列博客 [算法]刷题范围建议 和 代码规范 [算法]复杂度理论 ( 时间复杂度 ) [字符串]最长回文子串 ( 蛮力算法 ) [字符串]最长回文子串 ( 中心线枚举算法 ) [字符串]最长回文 ...

  5. 两数之和、三数之和、四数之和、K数之和

    两数之和.三数之和.四数之和和K数之和是最近听室友提起的几道有意思的基础题,可以说是把双指针运用的淋漓尽致.(K数之和其实是一个动态规划的题,此处因为满足*数之和的的结构,放在一起对比提一下). 1. ...

  6. 【计算两数之和】不使用加减乘除

    计算两数之和不论在计算机中还是生活中,都不算难(即使某些数据过大).但是如何能更高效的计算时一个难题,或者说在计算机内部是如何解析两个数之间的加法的,这就成了一个可以探讨的问题. 当然我们很了解十进制 ...

  7. 【每日一算法】两数之和 IV - 输入 BST

    微信改版,加星标不迷路! 每日一算法-两数之和IV-输入BST 作者:阿广 阅读目录 1 题目 2 解析 1 题目 给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目 ...

  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. ubuntu 如何正确的更换更新源
  2. Java(15) _Runtime类 内存方法
  3. 使用.Net图表开发工具JDash.Net添加组件
  4. seer文献_文献解读 | 师兄带你读一篇免疫浸润3分文章!
  5. Verilog_寻找最高有效位的位置
  6. Gentle中的数据表实体类相关自定义属性的设置和获得
  7. 数据库恢复子系统的常见技术和方案对比(一)
  8. linux分屏显示文件行数,linux常用命令集合1
  9. android checkboxpreference属性,如何更改android中CheckBoxPreference标题的文本颜色?
  10. 推箱子c语言代码有注释,C语言推箱子源代码推箱子代码完善
  11. 微弱信号检测技术在机械早期故障探查中的应用研究
  12. 微软拼音输入法 设置双拼 及全双拼切换
  13. 外贸大宗商品行业ERP管理解决方案
  14. 技能竞赛中职计算机课程建设,从计算机辅助设计(工业产品CAD)竞赛谈中职学校计算机应用专业建设.pdf...
  15. 配置aconda_重装windows系统后配置Anaconda
  16. UIAutomatorViewer
  17. 如何在 Spring Boot 优雅关闭加入一些自定义机制
  18. 使用NGUI模仿制作“切水果”
  19. EXCEL中删除灰色边框的方法
  20. SAP中MRP控制者的应用理解

热门文章

  1. 【Spring学习笔记-MVC-13.2】Spring MVC之多文件上传
  2. FreePBX SIP Trunk
  3. XML教程和SVG可伸缩矢量图形 (Scalable Vector Graphics)教程
  4. DNN数据库核心表结构及设计思路探研
  5. 泛域名Wildcard Domain
  6. (POJ 3026) Borg Maze 最小生成树+bfs
  7. 使用antd UI组件有感
  8. 【剑指offer】面试题四:替换空格
  9. asp.net的三层架构图
  10. android studio 导入、移除module、以及加载module中的jar包