打卡力扣题目二

简介: 打卡力扣题目二

关于 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

相关文章
|
6月前
快排&超详细,Leetcode排序数组题目带你升华掌握(上)
快排&超详细,Leetcode排序数组题目带你升华掌握
21 0
|
7月前
|
人工智能 算法
打卡力扣题目十三
打卡力扣题目十三
|
7月前
|
算法
打卡力扣题目十二
打卡力扣题目十二
|
7月前
|
算法
打卡力扣题目九
打卡力扣题目九
|
7月前
|
算法
打卡力扣题目八
打卡力扣题目八
|
7月前
|
算法 Python
打卡力扣题目七
打卡力扣题目七
|
7月前
|
算法 Python
打卡力扣题目六
打卡力扣题目六
|
7月前
|
存储 算法 Python
打卡力扣题目五
打卡力扣题目五
|
7月前
|
存储 算法
打卡力扣题目四
打卡力扣题目四
|
7月前
|
存储 算法
打卡力扣题目三
打卡力扣题目三

热门文章

最新文章