LeetCode 1. 两数之和
1. 两数之和
难度:简单
题目
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。你可以按任意顺序返回答案。
示例
示例 1:
输入:nums = [2,7,11,15], target = 9 |
示例 2:
输入:nums = [3,2,4], target = 6 |
示例 3:
输入:nums = [3,3], target = 6 |
提示
2 <= nums.length <= 10^4-10^9 <= nums[i] <= 10^9-10^9 <= target <= 10^9- 只会存在一个有效答案
进阶
你可以想出一个时间复杂度小于 O(n²) 的算法吗?
解法一:暴力枚举
class Solution: |
复杂度分析
- 时间复杂度:O(n²)
- 空间复杂度:O(1)
解法二:哈希表
class Solution: |
复杂度分析
- 时间复杂度:O(n)
- 空间复杂度:O(n)
作者笔记
语法点:冒号 :
- 函数定义
def func():— 告诉 Python 下一行开始缩进(语法必须有) - 参数类型标注
nums: int— 标注参数类型(给人/编辑器看,不影响运行) - 返回值标注
-> List[int]— 标注函数返回类型,说明要返回 List 格式,所以return [i, j]
语法点:缩进
Python 没有花括号 {} 表示代码块,缩进就是代码块的标志。
理解暴力枚举
for i in range(len(nums)):len 求数组长度,for in range 遍历整个长度。
理解哈希表
{} 在 Python 里就是空字典(键值对),所以 hash_table = {}。
按顺序从头开始找,用 target 减去当前数字,然后在哈希表里查找匹配项:
- 如果没有找到,就把当前数字和它的下标存入哈希表
- 如果找到,就返回
[找到的序号, 当前序号]
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 好的好的378的博客!
评论
