给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。
Example
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
a + b = target
也可以看成是
a = target - b
在map[整数]整数的序号中,可以查询到a的序号。这样就不用嵌套两个for循环了。
func twoSum(nums []int, target int) []int {
m := make(map[int]int, len(nums))
for i, b := range nums {
if j, ok := m[target-b]; ok {
return []int{j, i}
}
m[nums[i]] = i
}
return nil
}
Python
class Solution:
def twoSum(self, nums, target):
if len(nums) <= 1:
return False
d = dict()
for i in range(len(nums)):
if nums[i] in d:
return [d[nums[i]], i]
else:
d[target - nums[i]] = i
恩,最后找队友一起刷题。喜欢可以联系我
本文分享自 Python爬虫与算法进阶 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!