打卡力扣题目二

#左耳听风 ARST 打卡活动重启#

目录

一、问题

[二、 解题方法一](#二、 解题方法一)

三、enumerate函数介绍


关于 ARTS 的释义 ------ 每周完成一个 ARTS:

● Algorithm: 每周至少做一个 LeetCode 的算法题

● Review: 阅读并点评至少一篇英文技术文章

● Tips: 学习至少一个技术技巧

● Share: 分享一篇有观点和思考的技术文章

希望通过此次活动能聚集一波热爱技术的人,延续好奇、探索、实践、分享的精神。


一、问题

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

二、 解题方法一

复制代码
def two_sum(nums, target):
    hashmap = {}
    for i, num in enumerate(nums):
        if target - num in hashmap:
            return [hashmap[target - num], i]
        hashmap[num] = i

这段代码实现了一个函数 `two_sum`,用于在一个整数数组 `nums` 中找出两个数,使它们的和等于给定的目标值 `target`。

具体实现过程如下:

  1. 首先定义一个空字典 `hashmap`,用于存储已经遍历过的元素及其对应的下标。

  2. 然后使用 `enumerate` 函数对数组 `nums` 进行遍历,得到每个元素的下标 `i` 和值 `num`。

  3. 对于当前元素 `num`,我们计算出它与目标值 `target` 的差值 `target - num`,然后在字典 `hashmap` 中查找是否存在这个差值作为键的元素。如果存在,说明找到了这两个数,直接返回它们的下标即可。

  4. 如果字典 `hashmap` 中不存在差值为 `target - num` 的键,则将当前元素 `num` 作为键,下标 `i` 作为值存入字典中。这样,在后续的遍历过程中,如果再次遇到相同的差值,就可以直接从字典中获取到它们对应的下标,从而找到这两个数。

  5. 如果遍历完整个数组都没有找到符合条件的两个数,则返回 None 或者抛出异常。

需要注意的是,这个算法的时间复杂度为 O(n),其中 n 为数组的长度。因为在最坏情况下,我们需要遍历整个数组才能确定是否存在符合条件的两个数。
在计算机科学中,时间复杂度是一个函数,它定性描述该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。

例如,如果一个算法的时间复杂度为 O(n),则当输入大小增加时,该算法的运行时间将按 n 的幂次增加。同样,如果一个算法的时间复杂度为 O(n^2),则当输入大小增加时,该算法的运行时间将按 n^2 的幂次增加。

三、enumerate函数介绍

enumerate() 是 Python 的一个内置函数,用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
下面是 `enumerate()` 函数的语法:

复制代码
enumerate(sequence, [start=0])

其中,`sequence` 是一个序列、迭代器或其他支持迭代对象;`start` 是下标起始位置,默认值为 0。
`enumerate()` 函数返回一个枚举对象,可以使用 `list()` 函数将其转换为列表。例如:

复制代码
fruits = ['apple', 'banana', 'orange']
for i, fruit in enumerate(fruits):
    print(i, fruit)

输出结果为:

0 apple

1 banana

2 orange

相关推荐
chase。几秒前
Python包构建工具完全指南:python -m build 使用详解
开发语言·chrome·python
xin_yao_xin5 分钟前
PaddleOCR系列——《文本检测、文本识别》模型训练
人工智能·python·paddlepaddle·ppocr
2401_833197735 分钟前
用Python制作一个文字冒险游戏
jvm·数据库·python
Yu_Lijing7 分钟前
基于C++的《Head First设计模式》笔记——生成器模式
c++·笔记·设计模式
A923A10 分钟前
【洛谷刷题 | 第四天】
算法·前缀和·贪心·洛谷·差分
次旅行的库18 分钟前
【问渠哪得清如许-数据分析】学习笔记-下
数据库·笔记·sql·学习
万粉变现经纪人22 分钟前
如何解决 pip install cx_Oracle 报错 未找到 Oracle Instant Client 问题
数据库·python·mysql·oracle·pycharm·bug·pip
bai_lan_ya22 分钟前
使用linux的io文件操作综合实验_处理表格
linux·服务器·算法
sw12138923 分钟前
使用Plotly创建交互式图表
jvm·数据库·python
2301_8101609525 分钟前
如何为开源Python项目做贡献?
jvm·数据库·python