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

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

示例:

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

解题:

/*** 思路1:暴力法,对每个元素,都去查找是否有与其和为target的元素* @param nums* @param target* @return*/public int[] twoSum1(int[] nums, int target) {for(int i=0;i<nums.length;i++) {for(int j=i+1;j<nums.length;j++) {if(nums[i] +nums[j] == target) {return new int[]{i,j};}}}return null;}
/*** 思路2:对思路1进行优化,利用HashMap的O(1)查找性,用空间换时间* @param nums* @param target* @return*/public int[] twoSum2(int[] nums, int target) {Map<Integer, Integer> map = new HashMap<Integer, Integer>(nums.length);for(int i=0;i<nums.length;i++) {map.put(nums[i], i);}for(int i=0;i<nums.length;i++) {if(map.containsKey(target-nums[i]) && map.get(target-nums[i]) !=i) {return new int[]{i,map.get(target-nums[i])};}}return null;}
/*** 思路3:对思路2进行优化,一遍迭代完成* @param nums* @param target* @return*/public int[] twoSum(int[] nums, int target) {Map<Integer, Integer> map = new HashMap<Integer, Integer>(nums.length);for(int i=0;i<nums.length;i++) {if(map.containsKey(target-nums[i])) {return new int[]{i,map.get(target-nums[i])};}else {map.put(nums[i], i);}}return null;}

2019-03-15-算法-进化(两数之和)相关推荐

  1. Android面试中常问的几种简单算法(两数之和、开灯、上楼梯、柠檬水、找最多的数)

    大家好,最近在面试,大小公司可能都会问一两个算法,来测试面试者的算法能力.本篇博客从笔者被问到的几个简单算法来给大家分享一下,(面试官会根据面试者的能力,提问不同难度,这篇的分享是比较简单的,大神可忽 ...

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

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

  3. 算法笔记-两数之和、三数之和、四数之和(LeetCode)

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

  4. 力扣算法001_两数之和

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

  5. Java算法题:两数之和

    LeetCode原题: 给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列  ,请你从数组中找出满足相加之和等于目标数 target 的两个数. 示例 1: 输入:num ...

  6. Java算法(两数之和)

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

  7. php算法两数之和 复杂度,每天一道leetcode算法题:两数之和-php版

    我们先来看题目: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用 ...

  8. 算法:两数之和(two-sum)。

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

  9. leetcode算法题--两数之和

    题目地址:https://leetcode-cn.com/problems/two-sum/ vector<int> twoSum(vector<int>& nums, ...

  10. 【leetcode】 算法题1 两数之和

    [leetcode] 算法题1 两数之和 问题   给定一个整数数组和一个目标值,找出数组中和为目标值的两个数. 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nums ...

最新文章

  1. GridView利用FootTemplate插入新记录
  2. java 静态方法覆盖_Java中方法的覆盖和静态方法的隐藏
  3. Ajax的get、post和ajax提交
  4. 简单的python画图代码_python opencv如何实现简易画图板 python opencv实现简易画图板代码...
  5. updatepanel失效怎么办_【点滴积累】解决jQuery绑定事件在updatepanel更新后失效的方法...
  6. 硬派SUV坦克500撞色款预计年底上市
  7. MySQL用函数统计记录总数_在mysql中使用COUNT 或者SUM函数计算记录总数
  8. 微信号也有加人涨粉规则和限制?
  9. 无法在VMware Player中安装64位系统
  10. iOS开发之超级签名-原理/机制/技术细节-完全解析(暂时还没有验证)
  11. Python采集深圳美莱(仅思路)
  12. Chrome升级 76.0.3809.87后 GreenChrome无法使用的办法
  13. 新浪微博Emoji表情解析
  14. 数据杂谈:大数据之ETL(数据抽取,转换何加载)
  15. Bugku misc 旋转跳跃wp
  16. matlab 地址中有变量,在matlab中符号变量
  17. 【职业规划】该如何选择职业方向?性能?自动化?测开?学习选择python、java?
  18. windows Internet Connection Sharing(ICS)服务的启动
  19. 仪表图形怎么用c语言写,科一仪表盘图标大全
  20. 李若彤揭秘退隐10年原因:感情不顺 父亲离世 曾患抑郁症

热门文章

  1. windows下配置mysql主从复制_Windows下MySQL主从复制的配置方法
  2. print的describe的展示全部数据_大数据项目中的QA需要迎接新的挑战
  3. nx二次开发c语言,NX二次开发-UFUN API函数编程基础
  4. 16岁上大学,25岁博士毕业,她还是南大医学院最年轻的博导!
  5. 假如人类长出翅膀,会变成这种怪样子
  6. 目瞪口呆!137亿年的宇宙演化,竟然如此震撼!简直颠覆想象....
  7. 女生心中的理想男生!这些条件你符合几条?
  8. 用一个小球揭开地球的面纱,探索地球运转的秘密!
  9. 推荐系统相关算法(1):SVD
  10. oracle clob 查询换行,sqoop clob从Oracle导入到hive   回车换行导致记录增多