首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
LeetCode Hot 100
vim怎么退出
创建于2024-08-22
订阅专栏
坚持刷完热题100
等 1 人订阅
共100篇文章
创建于2024-08-22
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
40.二叉树的直径
题目链接 解法 递归dfs 思路 最长直径看起来就是左子树的最大深度加上右子树的最大深度,但是其实这样有一个误区,如果该root没有左子树或者右子树,那么相加时不是它的最大直径。 不能简单的直接返回
39.对称二叉树
题目链接 解法1 递归 思路 因为函数签名只有一个节点入口,而题目要求的是二叉树是否镜像,既然镜像那肯定需要比较左子树和右子树。 所以需要一个辅助函数来去解决问题,这个辅助函数接受该节点的左右子树。
38.翻转二叉树
题目链接 解法1 递归 思路 翻转这棵树其实本质上就是左右子树的交换。递归的时候拿到左右子树的节点,然后交换节点,最后返回根节点即可。 终止条件是当前节点为空时返回 null。 代码 时空复杂度 时间
37.二叉树的最大深度
题目链接 解法1 递归dfs 思路 像二叉树的一些题目都可以用递归的思路去解题。 递归首先想到的是停止条件,如果当前节点没有左右子树,那么深度为 1 直接返回即可。 接下来对左子树和右子树递归计算深度
36.二叉树的中序遍历
题目链接 解法1 递归 思路 首先要搞清楚什么是中序遍历,其实什么序就是根节点在哪里,中序就是根节点在中间,按照左中右的顺序来遍历整颗树。 所以递归的时候按照左中右的顺序即可。 代码 时空复杂度 时间
35.LRU 缓存
题目链接 解法1 利用ES6有序Map特性 思路 JavaScript 的 Map 本身就是一个有序 Map —— 它会按照插入顺序保存 key。 所以可以利用这个特性来去构造 LRU。当访问时,将它
34.合并 K 个升序链表
题目链接 解法1 暴力解法 思路 和之前的链表排序一个思路。先保存下来,再对数组进行排序,最后修改指针。 代码 时空复杂度 时间复杂度:重点是排序的开销,所以是 O(n logn) 空间复杂度:需要存
33.排序链表
题目链接 解法1 暴力解法 思路 先不考虑空间的做法就是将所有节点都放在数组里,然后通过数组排序,最后修改链表指针。 代码 时空复杂度 时间复杂度:耗时最多是 sort 排序这里,渐进复杂度为 O(n
32.随机链表的复制
题目链接 解法 暴力解法map+两次遍历 思路 深复制需要复制原链表的 random 关系,而在遍历过程中,可能 random 上的新节点还没有被创建出来,无法实现,所以需要两次遍历。 可以第一次遍历
31.K 个一组翻转链表
题目链接 解法1 暴力解法 思路 暴力解法的思路其实和上一题一样,先把链表存在数组里,然后再进行 k 个一组的翻转,最后进行 next 指针的重置。 要注意如果后续链表长度不足 k 时应该保持原样。
30.两两交换链表中的节点
题目链接 解法1 暴力解法 思路 两两交换节点,既然通过链表不好修改,那是不是可以将节点缓存到数组当中。 然后修改它们的顺序,最后再逐一修改 next 指针就好。 代码 时空复杂度 时间复杂度:三次遍
29.删除链表的倒数第N个结点
题目链接 解法1 暴力解法 思路 如果我们先知道链表的长度,那么就可以合理推断出需要被删除链表的前一个节点。 于是可以先遍历一遍整个链表,获取长度。但此时如果链表的长度和 n 相等,那么说明需要删除头
28.两数相加
题目链接 解法1 暴力解法 思路 最简单的方法就是先获取两个链表的数字,相加得到整数结果,然后对这个结果遍历新建链表。 另外链表存储是逆序,答案也需要逆序,所以在遍历获取时需要变正序。而且输出答案要从
27.合并有序链表
题目链接 解法1 暴力解法 思路 最简单的办法就是将所有链表节点先按照升序给排列出来,缓存到数组当中。 然后再去遍历数组,修改每个节点的 next 指针。最后返回数组的第一个节点即可。 代码 时空复杂
26.环形链表2
题目链接 解法1 暴力解法 思路 和上一题的思路类似,上一题是检查是否有环,而现在题目要求返回环形的入口。 环形的入口其实就是哈希表里第一个重复的节点。直接返回即可。 代码 时空复杂度 时间复杂度:O
25.环形链表
题目链接 解法1 暴力解法 思路 暴力解法的思路依然是将链表用哈希表缓存下来。 如果当前节点存在于哈希表当中,则直接返回。反之则加入哈希表,然后继续遍历下一个节点。 当存在环时,会在哈希表当中查询到直
24.回文链表
题目链接 解法1 暴力解法 思路 最简单的办法就是先遍历整个链表,将链表内容缓存下来。 然后采用双指针的方式遍历是否是回文链表。 代码 时空复杂度 时间复杂度:两次遍历 O(n) 空间复杂度:使用数组
23.翻转链表
题目链接 解法1 暴力解法 思路 因为是单向链表,所以只能一直往前走。 这样可以遍历整个链表缓存下来,然后再从后面开始遍历修改 next 指向。 代码 时空复杂度分析 时间复杂度:一层循环。虽然遍历了
22.相交链表
题目链接 解法1 暴力解法 思路 最暴力的解法就是遍历A链表同时逐个遍历B链表,如果相同则返回。 如果A走到最后则没有相交,则返回null节点。 代码 时空复杂度分析 时间复杂度:两层遍历,O(m *
21.搜索二维矩阵 II
题目链接 解法1 暴力解法 思路 按照暴力的思路就是每一行遍历呗...如果相等直接 return 。 (没想到暴力竟然ac了..笑哭hhh) 代码 时空复杂度 时间复杂度:两层遍历,最差遍历n,虽有提
下一页