首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Leetcode 第一题 《两数之和》

Leetcode 第一题 《两数之和》

作者头像
birdskyws
发布2018-09-12 15:48:45
6250
发布2018-09-12 15:48:45
举报

原题目

定一个整数数组和一个目标值,找出数组中和为目标值的两个数。

你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。

示例:

给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]

Leetcode给出了三种解法

  • 暴力法 复杂度O(n^2)
  • 两遍Hash表法,创建Hash表一次O(n),遍历查找O(n)
  • 一遍Hash

一遍Hash算法说明

  1. 第一个元素添加到hash表,key是num,value是index。
  2. 计算target - 第二个元素,
    • 如果在Hash表中,遍历结束。命中index(1)和当前元素index(2),返回[1,2]
    • 如果Hash查找没有命中,将2添加到Hash表
  3. 遍历nums数组。

Python 实现

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

评分,战胜99.96%的python提交记录

屏幕快照 2018-07-12 下午12.55.14.png

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.07.12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原题目
  • 示例:
  • Leetcode给出了三种解法
  • 一遍Hash算法说明
  • Python 实现
  • 评分,战胜99.96%的python提交记录
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档