【leetcode每日两题】-Day1-简单题

栏目: IT技术 · 发布时间: 4年前

内容简介:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9

所以返回 [0, 1]

class Solution:
    #哈希
    def twoSum(self, nums: List[int], target: int) -> List[int]: # nums = [2, 7, 11, 15] target = 9
        hashmap = {}
        for i in range(len(nums)): # i= 0,1,2,3
            if (target - nums[i]) in hashmap: # target = 9 target -nums[i] = 7 , 2 , -2 , -6
                return [nums.index(target - nums[i]),i]
            # 错误:hashmap.get(i) = nums[i] # {0:2,1:7,2:11,3:15}
            hashmap[nums[i]] = i

做题思路:

本题要求我们根据target返回nums中符合条件的索引并放在一个list中,考虑到这里,我们可以考虑哈希表,因为哈希表这种key-value形式可以减小数据查找的时间复杂度,将时间复杂度从两层循环的o(n2)降低为o(n)。代码中

hashmap[nums[i]] = i就是给哈希表中的kay-value赋值。需要注意的是 python 语言不想 java 等其他语言需要声明数据类型,所以在python做题当中经常用dict类比hashmap,用list类比queue和stack等等

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/two-sum

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

BLOG启示录

BLOG启示录

胡嘉玺 / 清华大学出版社 / 2010-7 / 48.00元

《BLOG启示录:WordPress博客建设与经营》分三大部分,共17章。第一部分(1~5章)主要是介绍Web 2.0、博客,以及LAMP的安装和架设,更有完整的主机、域名、DNS、WordPress安装、申请、交费等步骤,读者即使对计算机、主机、网络、域名等知识完全不懂,也可以依照《BLOG启示录:WordPress博客建设与经营》的步骤来落实整个WordPress基础建设的架构及安装。 ......一起来看看 《BLOG启示录》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具