给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例:

给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

解题:

方案 执行用时 内存消耗 语言
方案1 36 ms 2.9 MB Golang
方案2 4 ms 3.5 MB Golang

方案1:

func twoSum(nums []int, target int) []int {
    length := len(nums)
    for i, v := range nums {
        for j, vv := range nums[i+1 : length] {
            if v+vv == target {
                return []int{i, j + i + 1}
            }
        }
    }
    return []int{}
}

方案2:

func twoSum(nums []int, target int) []int {
    out := make([]int, 0)
    source := make(map[int]int, len(nums))

    for i, v := range nums {
        source[v] = i
    }

    for i, v := range nums {
        if source[target - v] != 0 && source[target - v] != i{
            out = append(out, i, source[target - v])
            return out
        } 
    }
    return out
}
0条评论 顺序楼层
请先登录再回复