今天刷了一下letcode的第一题——两数之和

自己用python写了下,最简单的就是暴力求解,这里就不写了.

class Solution(object):
   def twoSum(self, nums, target):
           for index, value in enumerate(nums):
                if(target – value) in nums:
                   temp = nums[index+1:]
                   for i, v in enumerate(temp):
                       if v == (target-value):
                          return [index, i+index+1]
这是我最初的写法,运行的消耗700ms,这种写法主要是需要找到target和target-value的关系,这样能减少一些无用循环,后面看了一些优秀coder的写法,发现效率更高.
class Solution(object):
   def twoSum(self, nums, target):
         map = {}
         for index, value in enumerate(nums):
               map[value] = index
         for i, v in enumerate(nums):
               if (target-v) in nums:
                   j = map.get(target-v)
                   if j and j !=i:
                     return[i,j]
这种写法利用了哈希表的数据结构,加快了搜索target-v值索引的搜索效率,减少了遍历查找key值的速度.
分类: 未分类

0 条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注