第一次,超时
class Solution(object):
def twoSum(self, nums, target):
for i in range(len(nums)):
for j in range(i+1,len(nums)):
if(nums[i] + nums[j] == target):
return [i,j]
-
时间复杂度:O(n^2)
-
空间复杂度:O(1)
第二次 执行用时:1400 ms (超过44%):
class Solution(object):
def twoSum(self, nums, target):
nums2 = []
for i in range(len(nums)):
nums2.append(target - nums[i])
for i in range(len(nums)):
if nums[i] in nums2 and i != nums2.index(nums[i]):
return [i,nums2.index(nums[i])]
-
时间复杂度:O(n)
效果太差了
第三次,用字典试试:
class Solution(object):
def twoSum(self, nums, target):
dic = {}
for i in range(len(nums)):
dic[target - nums[i]] = i
for i in range(len(nums)):
if dic. __contains__(nums[i]) and dic[nums[i]] != i:
return [i,dic[nums[i]]]
执行用时: 52 ms(超过80%),效果比较明显
再试一次:
class Solution(object):
def twoSum(self, nums, target):
dic = {}
for i in range(len(nums)):
dic[target - nums[i]] = i
for i in range(len(nums)):
if nums[i] in dic.keys() and dic[nums[i]] != i:
return [i,dic[nums[i]]]
可以了,就这样吧