No.1 Two Sum

问题:

给定一个数和一个数列,找到这个数列中某两个元素之和为给定的数,返回这两个数的 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 会返回一个字典- [ ]
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 引言:用Js攻略leetcode中的算法,将会介绍自己的思路和注意点,一边学习一边愉快刷题呀。 问题: 给定一个整...
    mooory阅读 4,461评论 0 0
  • Q: Given an array of integers, return indices of the two ...
    wxqyppqm阅读 2,880评论 0 0
  • 链接:https://leetcode.com/problems/two-sum/submissions/原题: ...
    yuansc阅读 2,920评论 0 0
  • 对于一个对电脑一点兴趣都没有的人更不要说什么考计算机一级,每次上计算机课都感觉自己在听天书,每周都要做几套的练习...
    深信文秘郑悦雯45阅读 3,567评论 0 0
  • 一个是西汉的篡国者王莽一个是明朝的海瑞为什么要一起写呢? 一直有个观点如果海瑞能像王莽一样的当皇帝,他一定会和王莽...
    彭迅阅读 4,266评论 0 0