题目描述:
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
解题思路:
1.暴力法
遍历所有可能的两数之和, 判断是否满足条件。
func twoSum(nums []int, target int) []int {
length := len(nums)
for i := 0; i < length-1; i++ {
for j := i + 1; j < length; j++ {
if target == (nums[i] + nums[j]) {
return []int{i, j}
}
}
}
return []int{}
}
2.哈希表
存储遍历过的数字和位置的映射关系,以空间换时间
func twoSum(nums []int, target int) []int {
tmp := make(map[int]int)
for i, v := range nums {
left := target - v
if j, exist := tmp[left]; exist {
return []int{j, i}
}
tmp[v] = i
}
return []int{}
}
网友评论