打卡力扣题目二

该文介绍了ARTS技术活动,包括做算法题、阅读英文文章、学习技巧和分享心得。文中提供了一个使用enumerate函数解决LeetCode两数之和问题的Python解题方法,阐述了算法思想和时间复杂度分析。
摘要由CSDN通过智能技术生成

#左耳听风 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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习python两年半

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值