题解 | #两数之和#
两数之和
http://www.nowcoder.com/practice/20ef0972485e41019e39543e8e895b7f
python 暴力法:
for i in range(len(numbers)):
for j in range(i+1, len(numbers)):
if numbers[i] + numbers[j] == target:
return i+1, j+1python 预先准备好map,由于数字可能重复出现所以map是{6:[1,4], 7:[2]}的形式,数组内表示数字出现的次数
map = {}
for i, n in enumerate(numbers):
if map.get(n):
map[n].append(i+1)
else:
map[n] = [i+1]
for n in numbers:
if target - n in map:
if map[n][0] != map[target-n][0]:
return map[n][0], map[target-n][0]
elif len(map[target-n]) > 1:
return map[n][0], map[target-n][1]python 在遍历中创建map(三个中的最优)
map = {}
for i, n in enumerate(numbers):
if map.get(target - n) is not None:
return map[target-n]+1 , i+1
else:
map[n] = i