思路:
用 hashMap 存储遍历过的元素和对应的索引。
每遍历一个元素,看看 hashMap 中是否存在满足要求的目标数字。
所有事情在一次遍历中完成(用了空间换取时间)。
// twoSum 函数接受一个整数数组 nums 和一个目标值 target,返回数组中两个数字的索引,使它们的和等于目标值。
// 如果有多个解决方案,只需返回任意一个即可。
func twoSum(nums []int, target int) []int {// 使用哈希表存储数组元素及其索引preNums := map[int]int{}// 遍历数组for i, num := range nums {// 计算当前数字对应的目标值targetNum := target - num// 检查目标值是否在哈希表中targetNumIndex, ok := preNums[targetNum]if ok {// 如果目标值存在,返回目标值的索引和当前索引return []int{targetNumIndex, i}} else {// 如果目标值不存在,则将当前数字及其索引存入哈希表preNums[num] = i}}// 如果没有找到满足条件的索引,返回空数组return []int{}
}