题面
给出一个整数数组,请在数组中找出两个加起来等于目标值的数,
你给出的函数 twoSum 需要返回这两个数字的下标(index1,index2),需要满足 index1 小于 index2.。

注意:下标是从 1 开始的 假设给出的数组中只存在唯一解
例如:
给出的数组为 {20, 70, 110, 150}, 目标值为 90
输出 index1=1, index2=2

分析
暴力破解双层循环
确保使用的哈希,在查询之后收录当前索引位
哈希实现
一次循环解决哈希读写,递增索引查询

func twoSum( numbers []int ,  target int ) []int {
    m := make(map[int]int,0)
    for i,v := range numbers {
        if idx, ok := m[target-v];ok{
            return []int{idx,i+1}
        }
        m[v]=i+1
    }
    return nil
}
暴力破解
func twoSum( numbers []int ,  target int ) []int {
    for i:=0;i<len(numbers);i++ {
        for j:=i+1;j<len(numbers);j++{
            if numbers[i] + numbers[j] == target {
                return []int{i+1,j+1}
            }
        }
    }
    return nil
}
数对和
找出数组中两数之和为指定值的所有整数对。一个数只能属于一个数对

输入: nums = [5,6,5], target = 11
输出: [[5,6]]
哈希查询成功,当前循环变量数不入哈希,对应哈希计数减记

func pairSums(nums []int, target int) [][]int {
    rs := [][]int{}
    m := make(map[int]int, 0)
    for _,v := range nums{
        if cnt,ok := m[target-v];ok && cnt > 0{
            rs = append(rs, []int{target-v, v})
            m[target-v]--
        }else{
            m[v]++
        }
    }
    return rs
}