📅 第1天 - 开始新征程
日期: [2026/01/22] 总题数: 3题 学习时间: 约90分钟
🆕 新题学习
-
题目#1 - [lc1:两数之和]
- 分类:哈希
- 难度:⭐
- 思路总结:基础的base两数之和,注意保存的时候目标值相减少,使用map用空间换时间,保存[值, 下标]的方法。
- 关键代码:!map.has(target - nums[i])
- 时间复杂度:O(n)
- 空间复杂度:O(n)
-
题目#2 - [lc49:字母异位词分组]
- 分类:哈希
- 难度:⭐⭐
- 思路总结:关键还是使用哈希表方法,将每个元素排序后的值看做key存入map中,在数组循环中存入[每个排序后的key值, []] 如果存在就直接push到value,不存在就新建一个空数组保存,最后返回map的valuse() 归类好的字符类型。
- 关键代码:
const sortX = x.split("").sort().join(""); const arr = map.get(sortX) || [];- 时间复杂度:O(n*klogk)
- 空间复杂度:O(nk)
-
题目#3 - [lc128:最长连续序列]
- 分类:哈希
- 难度:⭐⭐
- 思路总结:找到最长连续序列,给出的nums是无序的整数数组,首先把nums转换成唯一的set结构,循环set对象找连续递升的数据规律,循环中要找到头数,如果set存在当前循环数x - 1 那么就不是头数,需要跳过;找到头数后开始进入,子循环,查看 y = x + 1 在数组内是否存在;更新最大值ans 是 y - x (y 在实际的 + 1 不满足条件,跳出了循环, 实际公式是: y - 1 - x + 1)
- 关键代码:
if (numSet.has(x - 1)) { continue; }- 时间复杂度:O(n)
- 空间复杂度:O(n)
🔄 今日复习
- 无复习任务
📊 今日统计
- ✅ 新题完成:3题
- ✅ 复习完成:0题
- ✅ 总完成:3题
💭 学习感悟
[记录今日学习心得、难点、突破点]
- 看到题目2分钟内没有思路,我就马上看题解
- 看完题解后一定要自己再动手敲一遍,有时候看懂了,不一定能写出来
- 在自己完成中会出现很多细节的错误,导致无法ac,这个细节一定要多注意!多反思自己错误,易错逻辑点
- 最后建议复习的时候要掐点完成,模拟在有压力的情况下去稳定发挥
- 不管通过什么方法,一定要学习尝试分析这段代码的:时间和空间复杂度,会写还要会分析
最后
感谢看到最后
①如果有不同看法,欢迎在文章下方留言、评论
②如果对你有启发或帮助,欢迎恰个点赞吧,谢谢支持
文章内容仅供学习参考,如有侵权,非常抱歉,请立即联系作者删除