【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

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


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

查看所有标签

猜你喜欢:

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

C标准库

C标准库

P. J. Plauger / 卢红星、徐明亮、霍建同 / 人民邮电出版社 / 2009-7 / 79.00元

本书是由世界级C语言专家编写的C标准库经典著作。英文版已经重印十多次,影响了几代程序员。 本书结合C标准的相关部分,精辟地讲述了每一个库函数的使用方法和实现细节,而这正是一个真正的C程序员所必须掌握的。更重要的是,书中给出了实现和测试这些函数的完整源代码,可以让你更深入地学习C语言。不仅如此,本书还讨论了一些即使是最有经验的C程序员通常也不熟悉的知识,比如国际化和独立于区域设置的程序的编写、......一起来看看 《C标准库》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

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

Base64 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具