# 题目 # 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 ---------- 这道题采用hash表解法,在Go中也就是map。 ``` Go hashMap:=map[int]int{} ``` [scode type="yellow"]这样来声明一个hash表[/scode] 解题思路: ![力扣官方视频截图][1] 从这张图中就很容易看出原理了。 当总数减去当前循环的一个数时,map中有相同的数,就说明这两个数符合答案,就会返回,如果不符合,就会将当前循环数组的值和下标存进map中,再给下一次循环使用判断。 使用hash表可以极为快速的查找是否有相同值,如: ```Go value,ok:=mapName[values] ``` 这句话可以返回一个名字为mapName中有相同值(key)的下标,有就返回,没有就是false。 ## 解题代码 ## ```Go func twosumInit(nums []int, target int) []int { // 创建一个hashmap表 用于储存过滤过的数据 hashMap:=map[int]int{} // 利用循环来判断哈希表中是否存在满足条件的值 index下标 value值 for index,value:=range nums{ // 这个判断是读取当target-value剩下的数有相同的,就说明当前value下标与储存在map中的当前下标是这道题的答案 if i,ok:=hashMap[target-value];ok{ return []int{i,index} } // 当条件不满足时就把值存入hash表,这样下一次循环就可以利用hash表的特性方便的查找是否有符合条件的值 hashMap[value]=index } // 当条件都不满足时返回空 return nil } ``` [1]: https://www.yuhenm.top/usr/uploads/2021/09/1009640722.png Loading... # 题目 # 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 ---------- 这道题采用hash表解法,在Go中也就是map。 ``` Go hashMap:=map[int]int{} ``` <div class="tip inlineBlock warning"> 这样来声明一个hash表 </div> 解题思路: ![力扣官方视频截图][1] 从这张图中就很容易看出原理了。 当总数减去当前循环的一个数时,map中有相同的数,就说明这两个数符合答案,就会返回,如果不符合,就会将当前循环数组的值和下标存进map中,再给下一次循环使用判断。 使用hash表可以极为快速的查找是否有相同值,如: ```Go value,ok:=mapName[values] ``` 这句话可以返回一个名字为mapName中有相同值(key)的下标,有就返回,没有就是false。 ## 解题代码 ## ```Go func twosumInit(nums []int, target int) []int { // 创建一个hashmap表 用于储存过滤过的数据 hashMap:=map[int]int{} // 利用循环来判断哈希表中是否存在满足条件的值 index下标 value值 for index,value:=range nums{ // 这个判断是读取当target-value剩下的数有相同的,就说明当前value下标与储存在map中的当前下标是这道题的答案 if i,ok:=hashMap[target-value];ok{ return []int{i,index} } // 当条件不满足时就把值存入hash表,这样下一次循环就可以利用hash表的特性方便的查找是否有符合条件的值 hashMap[value]=index } // 当条件都不满足时返回空 return nil } ``` [1]: https://www.yuhenm.top/usr/uploads/2021/09/1009640722.png 最后修改:2021 年 09 月 27 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏