两数之和(无序整数数组)-基于Go

给定一个无序的整数数组numbers,从数组中找出两个数满足:
两数之和等于目标数target,且两个数不能是同一个数,
假设每个输入只对应唯一的答案,不能重复使用同一个元素(下标不能相同)。返回两数的下标。

  • 暴力解法
  • map打标记
package main

import (
	"fmt"
)

func bfSolution(nums []int, target int)(int, int){
	for i:=0;i<len(nums);i++{
		for j:=i+1;j<len(nums);j++{
			if nums[i]+nums[j]==target{
				return i,j
			}
		}
	}
	return -1,-1
}

func solution(nums []int, target int)(int, int){
	length := len(nums)
	var flags = make(map[int]int, length)
	for i:=0;i<length;i++{
		j, ok := flags[target-nums[i]]
		if ok{
			return j, i
		}
		flags[nums[i]] = i
	}
	return -1, -1
}

func main(){
	var nums = []int{-11,-13,3,4,5,6}
	var target = 7
	//i, j := bfSolution(nums, target)
	i, j := solution(nums, target)
	fmt.Printf("%d, %d
", i, j)
}
原文地址:https://www.cnblogs.com/pangqianjin/p/14629179.html