天天看點

兩數之和(簡單算法題)

  

給定一個整數數組 nums 和一個目标值 target,請你在該數組中找出和為目标值的那 兩個整數,并傳回他們的數組下标。

你可以假設每種輸入隻會對應一個答案。但是,數組中同一個元素不能使用兩遍。

示例:

給定 nums = [2, 7, 11, 15], target = 9

因為 nums[0] + nums[1] = 2 + 7 = 9

是以傳回 [0, 1]

golang代碼實作:

核心代碼邏輯實作:

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

}      

整個代碼運作:

package main

import "fmt"

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

func main(){
    nums := []int{2,7,11,15}
    target := 9
  a  :=  twoSum(nums,target)
  fmt.Println(a)
    
}