力扣题目:
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
LeetCode题目源地址:https://leetcode-cn.com/problems/two-sum/
两层循环,依次拿出一个元素跟后面的元素求和,看与目标值是否相等
func twoSum(nums []int, target int) []int {
for k1, v1 := range nums {
for k2 := k1 + 1; k2 < len(nums); k2++ {
if v1 + nums[k2] == target {
return []int{k1, k2}
}
}
}
return []int{}
}
我们使用哈希法,将给定的切片 nums 的索引和值,翻转存入到 map 中:
目标值 target - nums 中一个元素
是否存在 map 中;func twoSum(nums []int, target int) []int {
m := make(map[int]int)
for k, v := range nums {
if index, ok := m[target-v]; ok {
return []int{index, k}
} else {
m[v] = k
}
}
return []int{}
}
每天一道算法题,记得点赞打卡哦~