[leetcode]1.两数之和

题目

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

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

你可以按任意顺序返回答案。

示例 1:

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

示例 2:

输入:nums = [3,2,4], target = 6
输出:[1,2]

示例 3:

输入:nums = [3,3], target = 6
输出:[0,1]

提示:

2 <= nums.length <= 103
-109 <= nums[i] <= 109
-109 <= target <= 109
只会存在一个有效答案

解题思路

我的思路

暴力枚举:找到两数之和,大致的思路是,依次遍历整个数组。取第n个数nums[n],然后依此取n+1个数(因为n之前的数已经做过加法的,所以不必考虑,只考虑n之后的就行了),判断nums[n]+nums[n+1]等于target,直到n=length时停止。

我的代码

func twoSum(nums []int, target int) []int {n :=len(nums)ans := make([]int, 2)for i:=0;i<n;i++{for j:=i+1;j<n;j++{if nums[i]+nums[j]==target {//fmt.Println("i=,j=",i,j)ans[0]=ians[1]=j}}}return ans
}

复杂度分析

时间复杂度:O(N^2),其中 N 是数组中的元素数量。最坏情况下数组中任意两个数都要被匹配一次。

空间复杂度:O(1)。

自我评价

好多年不碰算法的第一题,硬是写了几个小时,菜鸡哭泣。由于不会写返回,强行定义了一个切片来存储。越看越蠢。

直接在if里return []int{i, j}就好啦。

加油少年!

补充思路

哈希表(来自leetcode官方)

注意到方法一的时间复杂度较高的原因是寻找 target - x 的时间复杂度过高。因此,我们需要一种更优秀的方法,能够快速寻找数组中是否存在目标元素。如果存在,我们需要找出它的索引。

使用哈希表,可以将寻找 target - x 的时间复杂度降低到从 O(N)降低到O(1)。

这样我们创建一个哈希表,对于每一个 x,我们首先查询哈希表中是否存在 target - x,然后将 x 插入到哈希表中,即可保证不会让 x 和自己匹配。

func twoSum(nums []int, target int) []int {hashTable := map[int]int{}for i, x := range nums {if p, ok := hashTable[target-x]; ok {return []int{p, i}}hashTable[x] = i}return nil
}

[leetcode]1.两数之和相关推荐

  1. [hashmap|空间换时间] leetcode 1 两数之和

    [hashmap|空间换时间] leetcode 1 两数之和 1.题目 题目链接 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下 ...

  2. C/C++描述 LeetCode 167. 两数之和 II - 输入有序数组

    C/C++描述 LeetCode 167. 两数之和 II - 输入有序数组   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在 ...

  3. LeetCode 1. 两数之和

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

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

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

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

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

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

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

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

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

  8. Leetcode 1. 两数之和 (Python版)

    有粉丝说我一个学算法的不去做Leetcode是不是浪费,于是今天闲来没事想尝试一下Leetcode,结果果断翻车,第一题没看懂,一直当我看到所有答案的开头都一样的时候,我意识到了我是个铁憨憨,人家是让 ...

  9. 【LeetCode】两数之和

    package leetcode.editor.cn;//给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. // // 你可 ...

最新文章

  1. NYOJ_5743Distribution(第八届河南省程序设计大赛)
  2. 通过90行代码学会HTML5 WebSQL的4种基本操作
  3. mysql密码安全级别_Mysql数据库的安全性问题释疑
  4. Dart语言基础Map、List、Set操作合辑
  5. JavaScript字符串方法——持续补充
  6. 老李分享:HTTP协议之协议头
  7. Linux一些有用的操作
  8. python爬取资源网站资源
  9. Python基础:while循环 以及 练习题 :三位数的水仙花数 GDP 计算π 判断一个数是否是素数
  10. . 尐儍苽 推荐一个专业的社团网站给您
  11. 阿里云服务器远程又链接不上 链接一下就闪烁一下又回到登陆界面,控制台重启一下才可以连接
  12. oracle dbf 超大,system01.dbf文件过大——SYSTEM表空间AUD$使用空间过大问题处理
  13. Eclipse启动时闪退问题解决方案
  14. [ 大道至简系列 ] 三分钟理解-1NF,2NF,3NF
  15. 软考中级哪个含金量高?我该如何选择?
  16. JavaScript的map方法
  17. html 下拉图片列表,图片、表单、下拉选项
  18. python公园售票小程序(身份证获取简单信息+简单数据分析+简单多线程)
  19. 2020-08-17:为什么HashMap中数组的容量为2的次幂?
  20. 【SHELL】 Linux SHELL 脚本语法及使用参考

热门文章

  1. sed 执行错误:sed: 1: “…”: Invalid command code f
  2. Magento教程 20:仅限会员留言的产品评论设定!
  3. SEO之Google--PageRank优化剖析(三)
  4. PHP 利用cron 实现文章同步至新浪、网易等微博
  5. OAuth 2.0——授权服务开发笔记(二)
  6. 【latex】最后一页 参考文献不平衡 左右不对齐
  7. mysql-数据库的增删切换使用等操作
  8. linux-noshell的模式
  9. Sublime 插件安装、卸载、更新
  10. Python正则表达式初识(九)