初入leetcode

来源:互联网 发布:手机淘宝叫快递 编辑:程序博客网 时间:2024/06/07 07:14

自从听说了美国码农找工作靠刷题,就来创了个leetcode账号玩一玩。看了看题库,先从第一题入手吧,Two Sum,嗯,挺简单的,连后面的标签都写的是easy难度,于是上来就两层循环,然后超时了。。

看来还是自己太naive了啊。后来仔细琢磨了一下,用hash table就能做到O(n)时间复杂度了,正好python的dict就是这么一个数据结构,于是就直接存到dict里面提交了,再次naive。如果测试数据中有重复数据的话,key下的value会被覆盖掉,所以得一边存一边找。

class Solution:    def twoSum(self, nums, target):        """        :type nums: List[int]        :type target: int        :rtype: List[int]        """        d = {}        for i in range(0, len(nums)):            if target - nums[i] in d:                return [d[target - nums[i]], i]            else:                d[nums[i]] = i

很有趣,这里不再像以前编程课上的提交的题一样无脑了,提交之前要再三思考,算好复杂度。再接再厉吧!