class Solution:
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
for i in range(len(nums)):
for j in range(i+1,len(nums)):
if nums[i] + nums[j] == target:
return (i,j)
感觉是写的有点不严谨
第一次执行 6788 ms通过了
但是第二次执行时,有一个16021位的列表,执行超时了
看别人写的是用字典,觉得不太能理解
然后仔细看了一下排名靠前的答案
嗯
字典真好用,真香
重点需要注意的几个点
1.enumerate()函数是一个很神奇的函数,相当于把字典转化为数组,不过是以元租组方式呈现的
2.速度快的原因是只做了一遍For循环,复杂度相当于O(n),把字典每一个值和ID遍历一遍的同时,计算目标值和遍历值之差是否存在与已存好的字典。遍历到了就取出来
这条是后来补的,就两天没看,代码又看不懂了,这。。这好像是我写的。
class Solution:
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
nums_dict = {}
for i, num in enumerate(nums):
if num in nums_dict:
return [nums_dict[num], i]
else:
nums_dict[target - num] = i
END-20181113-0021