给定一个整数数列,找出其中和为特定值的那两个数。
你可以假设每个输入都只会有一种答案,同样的元素不能被重用。
示例:
给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]
step 1:
class Solution(object):
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
list_len = len(nums)
for i in range(list_len):
for j in range(i+1,list_len):
if nums[i] + nums[j] == target:
return [i,j]
Q:最后一个测试用例会超时,穷举法,循环了两次,时间复杂度O(N*N)
step2:这里是先生成一个哈希表(字典),然后循环过程中判断当前元素和哈希表(字典)中的数据相加是否满足条件,遍历nums,遍历过程中判断当前元素和哈希表(字典)中的值相加能不能满足要求,也就是target-当前元素的值在哈希表(字典)中是否存在,如果存在,就返回2个索引(注意是return[**,index]),如果不存在,那么当前元素存入哈希表(字典)。
class Solution:
def twoSum(self, nums, target):dic[value] = index
笔记:
1、
twoSum函数的调用:
s = Solution()
print s.twoSum([3,2,4], 6)
2、
enumerate的用法:
enumerate()是python的内置函数,enumerate在字典上是枚举、列举的意思
对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
例如:
nums = [2, 7, 11, 15]
3 15
from:
https://www.jianshu.com/p/b71fc7307e42