leetcode 两数之和Python解答

空扰寡人 提交于 2020-02-26 00:06:26

萌新小白:

class Solution:
    def twoSum(self, nums, target) :
        nums_l = []
        for i in range(len(nums)-1):
            
            if (target -nums[i]) in nums[i+1:]:
                nums_l.append(i)
                nums_l.append(nums[i+1:].index(target -nums[i])+1+i)
                break
        return nums_l

由于是暴力解答,耗时方面较多。
在看题解中看到了大神们的字典模拟hash法,偷学了一手也贴上:

def twoSum(self, nums, target):
    hash_dict = {}
    for i,j in enumerate(nums):
        hash_dict[j] = i
    for k,l in enumerate(nums):
        p = hash_dict.get(target-l)
        if k!=p and p is not None:
            return [k,p]

耗时相比暴力 快了近十倍。我觉得学习大神们的思维还是很可取的。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!