go语言面试题:两数之和
以下是使用go语言实现两数之和的代码,已加上详细注释:
package main
import "fmt"
// twoSum 函数接收一个整形数组 nums 和一个目标值 target,返回满足条件的两个数的索引
func twoSum(nums []int, target int) []int {
numMap := make(map[int]int) // 用来存储数字对应的索引
for i, num := range nums {
// 遍历数组
complement := target - num // 计算当前数字相差的值
if j, ok := numMap[complement]; ok {
// 如果存在该值,则说明为满足条件的索引
return []int{
j, i} // 返回对应索引
}
numMap[num] = i // 将当前数字及其下标存入 numMap 中
}
return nil // 若未找到,则返回 nil
}
func main() {
nums := []int{
2, 7, 11, 15} // 测试用例
target := 9 // 测试用例
result := twoSum(nums, target) // 调用两数之和函数
fmt.Println(result) // 打印结果
}
在此代码中,我们首先创建了一个 map 变量 numMap
,用于存储数字对应的索引。接着使用 for
循环遍历该传递进来的数组。对于每一个要搜索的数字,做以下操作:
- 计算目标值与该数字的差值
complement
。 - 在
numMap
中查找该差值complement
是否存在,如果不存在,保存当前数字及其下标;反之则返回该数字及其对应的索引。
最后,若遍历完了整个数组,仍未找到满足条件的数,则返回 nil
。
还没有评论,来说两句吧...