go语言面试题:两数之和

约定不等于承诺〃 2024-03-16 14:51 182阅读 0赞

以下是使用go语言实现两数之和的代码,已加上详细注释:

  1. package main
  2. import "fmt"
  3. // twoSum 函数接收一个整形数组 nums 和一个目标值 target,返回满足条件的两个数的索引
  4. func twoSum(nums []int, target int) []int {
  5. numMap := make(map[int]int) // 用来存储数字对应的索引
  6. for i, num := range nums {
  7. // 遍历数组
  8. complement := target - num // 计算当前数字相差的值
  9. if j, ok := numMap[complement]; ok {
  10. // 如果存在该值,则说明为满足条件的索引
  11. return []int{
  12. j, i} // 返回对应索引
  13. }
  14. numMap[num] = i // 将当前数字及其下标存入 numMap 中
  15. }
  16. return nil // 若未找到,则返回 nil
  17. }
  18. func main() {
  19. nums := []int{
  20. 2, 7, 11, 15} // 测试用例
  21. target := 9 // 测试用例
  22. result := twoSum(nums, target) // 调用两数之和函数
  23. fmt.Println(result) // 打印结果
  24. }

在此代码中,我们首先创建了一个 map 变量 numMap,用于存储数字对应的索引。接着使用 for 循环遍历该传递进来的数组。对于每一个要搜索的数字,做以下操作:

  1. 计算目标值与该数字的差值 complement
  2. numMap 中查找该差值 complement 是否存在,如果不存在,保存当前数字及其下标;反之则返回该数字及其对应的索引。

最后,若遍历完了整个数组,仍未找到满足条件的数,则返回 nil

发表评论

表情:
评论列表 (有 0 条评论,182人围观)

还没有评论,来说两句吧...

相关阅读

    相关 面试01.02. 之和

    面试题01.02. 两数之和 > 前言:主要目的是为了持续输出,用浅显易懂,各种各样的方式来解析算法题,同时提高算法能力。答主的水平也有限,大家共同进步。 面试题01.0

    相关 算法之和

    两数之和 题目描述 示例 代码 执行效率 题目描述 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的