Leetcode Easy 0 Two Sum

第一次,超时

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]]]

                                    

可以了,就这样吧

猜你喜欢

转载自blog.csdn.net/li_k_y/article/details/84424942
今日推荐