题解 | #两数之和# -- [python3]
两数之和
http://www.nowcoder.com/practice/20ef0972485e41019e39543e8e895b7f
方法1: 两个指针暴力破解
class Solution: def twoSum(self , numbers , target ): masterIndex = 0 subIndex = 1 arrayLen = len(numbers) while masterIndex <= arrayLen -2: subIndex = masterIndex + 1 while subIndex <= arrayLen - 1: if target == numbers[subIndex] + numbers[masterIndex]: return [masterIndex + 1, subIndex + 1] subIndex += 1 masterIndex += 1
方法2: 字典模仿哈希表
class Solution: def twoSum(self , numbers , target ): if len(numbers)>1: # key 为 数组值,value为数组索引 hashMap = {} for i in range(len(numbers)): another = target - numbers[i] # 若在哈希表中,返回其值对应的索引 if another in hashMap: return [hashMap[another]+1, i + 1] # 若不在,则加入哈希表中 else: hashMap[numbers[i]] = i return [] else: return []