今日概览
- 日期:
{2025-11-13} - 题目数量:
{共 2 题} - 难度分布:
简单 2 - 主要收获:
自己的方法就是屎山,灵神的方法高端又通透 - 心情/状态:
太久没刷了,已经把基本的语法忘记了,以后尝试用python刷题,学习一些比较好用的函数
题目列表与详解
1. Two Sum
题号 / 链接:
#1/ 题目链接难度:
简单题型标签:
哈希表,数组题目描述(简要):
就是查找一下哪两个数相加等于target,返回下标。
思路分析
两个方法,不同的时间复杂度
方法一:暴力写法。
复杂度
- 时间:
O(*n*2) - 空间:
O(1)
1 | class Solution: |
这里主要是enumerate( )函数,忘记是干啥用的了,enumerate( ) 是 Python 提供的内置函数,用来在遍历可迭代对象(如列表、元组、字符串等)时,同时获得元素的索引和值。它的常见用法如下:
1 | words = ["apple", "banana", "cherry"] |
输出结果:
1 | 0 apple |
方法二:哈希。
1 | class Solution: |
复杂度
- 时间:
O(n) - 空间:
O(n)
2025.11.17 二刷
出去开会几天,把enumerate函数忘记了
1 | class Solution: |
反思与总结
可以按照题目要求找符合两数相加的值,也可以换一种思路直接去查找符合要求的值,枚举其中一个变量,把它当成常量看待,从而转化成「一个变量」的问题
2. 好数对的数目
- 题号 / 链接:
#2/ 题目链接 - 难度:
简单 - 题型标签:
哈希表,数组 - 题目描述(简要):
就是统计每个数出现了多少次,然后用排列组合算出来相加。
思路分析
我的垃圾写法,后续有可以进行改进,学习的新函数,还是贴了一下。
复杂度
1 | class Solution: |
如果换一个数据范围可能就不行了,更通用的写法可以使用 collections.Counter 或 defaultdict(int) 自动统计。还有可以直接使用排列组合公式cnt * (cnt - 1) // 2 就能得到该值的所有好数对数量。
改进方法一:使用 Counter
1 | from typing import List |
改进方法二:一边遍历一边累加
1 | from typing import List |
复杂度
- 时间:
O(n) - 空间:
O(n)
反思与总结
我的方法毫无通用性可言
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 WPIRONMAN!
评论
