[leetcode]1.两数之和
[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.两数之和相关推荐
- [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】两数之和与两数相加
大部分玩前端的小伙伴,在算法上都相对要薄弱些,毕竟调样式.调兼容就够掉头发的了,哪还有多余的头发再去折腾. 确实在前端中需要使用到算法的地方是比较少,但若要往高级方向发展,算法的基本功就非常重要啦.对 ...
- leetCode:twoSum 两数之和 【JAVA实现】
LeetCode 两数之和 给定一个整数数组,返回两个数字的索引,使它们相加到特定目标. 您可以假设每个输入只有一个解决方案,并且您可能不会两次使用相同的元素. 更多文章查看个人博客 个人博客地址:t ...
- 力扣(leetcode)-1. 两数之和
描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数组 ...
- LeetCode 01两数之和02两数相加
力扣 LeetCode01两数之和 LeetCode02两数之加 前言:第一次LeetCode打卡题解,前面组织的打卡活动从今天开始正式开始了,很多csdn和公众号小伙伴以及加入了,欢迎加入!详细看力 ...
- Leetcode 1. 两数之和 (Python版)
有粉丝说我一个学算法的不去做Leetcode是不是浪费,于是今天闲来没事想尝试一下Leetcode,结果果断翻车,第一题没看懂,一直当我看到所有答案的开头都一样的时候,我意识到了我是个铁憨憨,人家是让 ...
- 【LeetCode】两数之和
package leetcode.editor.cn;//给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. // // 你可 ...
最新文章
- NYOJ_5743Distribution(第八届河南省程序设计大赛)
- 通过90行代码学会HTML5 WebSQL的4种基本操作
- mysql密码安全级别_Mysql数据库的安全性问题释疑
- Dart语言基础Map、List、Set操作合辑
- JavaScript字符串方法——持续补充
- 老李分享:HTTP协议之协议头
- Linux一些有用的操作
- python爬取资源网站资源
- Python基础:while循环 以及 练习题 :三位数的水仙花数 GDP 计算π 判断一个数是否是素数
- . 尐儍苽 推荐一个专业的社团网站给您
- 阿里云服务器远程又链接不上 链接一下就闪烁一下又回到登陆界面,控制台重启一下才可以连接
- oracle dbf 超大,system01.dbf文件过大——SYSTEM表空间AUD$使用空间过大问题处理
- Eclipse启动时闪退问题解决方案
- [ 大道至简系列 ] 三分钟理解-1NF,2NF,3NF
- 软考中级哪个含金量高?我该如何选择?
- JavaScript的map方法
- html 下拉图片列表,图片、表单、下拉选项
- python公园售票小程序(身份证获取简单信息+简单数据分析+简单多线程)
- 2020-08-17:为什么HashMap中数组的容量为2的次幂?
- 【SHELL】 Linux SHELL 脚本语法及使用参考
热门文章
- sed 执行错误:sed: 1: “…”: Invalid command code f
- Magento教程 20:仅限会员留言的产品评论设定!
- SEO之Google--PageRank优化剖析(三)
- PHP 利用cron 实现文章同步至新浪、网易等微博
- OAuth 2.0——授权服务开发笔记(二)
- 【latex】最后一页 参考文献不平衡 左右不对齐
- mysql-数据库的增删切换使用等操作
- linux-noshell的模式
- Sublime 插件安装、卸载、更新
- Python正则表达式初识(九)