两数之和
题目:
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]
解题思路:
哈希表法
通过以空间换取速度的方式,我们可以将查找时间从 O(n) 降低到 O(1)。哈希表正是为此目的而构建的,它支持以近似恒定的时间进行快速查找。
我们可以将每个元素的值和它的索引添加到哈希表中,然后在遍历时检查每个元素对应的目标元素(target - nums[i])是否存在于表中。
注意⚠️,该目标元素不能是 nums[i] 本身!
//go
func twoSum(nums []int, target int) []int {
result := make([]int, 0)
m := make(map[int]int)
for i,k := range nums{
// 判断map中是否存在key为[target - k]的值
if value,exist := m[target - k];exist && value != i{
// append:尾部追加元素
result = append(result,value)
result = append(result, i)
}
m[k] = i
}
return result
}
地址:https://mp.weixin.qq.com/s/sTicB9IgCZxVhe53j7nsCA
small_lei_it 技术无止境,追求更高。

浙公网安备 33010602011771号