美文网首页
No.1 Two Sum

No.1 Two Sum

作者: 谢宝树 | 来源:发表于2018-11-23 17:04 被阅读3次

    问题:

    给定一个数和一个数列,找到这个数列中某两个元素之和为给定的数,返回这两个数的 index

    代码

      class Solution(object):
        def twoSum(self, nums, target):
            """
            :type nums: List[int]
            :type target: int
            :rtype: List[int]
            """
            for i,num in enumerate(nums):
                sub_num = target-num
                if sub_num in nums:
                    j = nums.index(sub_num)
                    if j<i:
                        return [i,j]
    

    思路:

    1.自然而然地想到暴力破解的思路,易得是 O(x^2)的时间复杂度,尝试了一下,时间超过了
    2.时间不够,那就空间换时间,用 hashmap 的思路,会得到时间复杂度和空间复杂度都是 O(n)的解法

    Note:

    1. enumerate 函数:enumerate(sequence,[start]=0)指定一个迭代器和一个初始位置(下标),返回一个枚举对象(enumerate)
    2. index函数:list.index(object)返回list 中第一个 object所在的索引,注意是第一个,所以 line 12的<可以改成!=,但不能改成>。举例,nums=[3,3],target=6。
    3. python的字典是用哈希实现的,所以用 enumerate 会返回一个字典- [ ]

    相关文章

      网友评论

          本文标题:No.1 Two Sum

          本文链接:https://www.haomeiwen.com/subject/fxojqqtx.html