首页
首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
LeetCode Hot 100
vim怎么退出
创建于2024-08-22
订阅专栏
坚持刷完热题100
等 1 人订阅
共90篇文章
创建于2024-08-22
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
50.二叉树中的最大路径和
题目链接 解法 递归 思路 要求最大的路径和这个大的问题,我们可以将它拆解成子问题左子树最大的路径和与右子树最大路径和以及当前节点。 那单个节点的最大路径和就是它自己,如果它有左右子树,尝试累加起来即
49.二叉树的最近公共祖先
题目链接 解法1 暴力解法 思路 最简单的方法就是从根节点开始往下找 p 和 q 。并把路径上的节点记录下来,然后逐个比较是否相等。 代码 时空复杂度 时间复杂度:O(n) 两遍遍历 空间复杂度:O(
48.路径总和 III
题目链接 解法1 暴力遍历所有路径 思路 不需要从跟节点开始说明了可以从任意节点开始累加到 targetSum。但是我们先处理从根节点开始如何去递归。 如果当前节点为空肯定返回 0 。然后加上当前节点
47.从前序与中序遍历序列构造二叉树
题目链接 解法1 暴力解法 思路 前序遍历的第一个节点是根节点,而根据根节点的值,再到中序遍历中寻找根节点,而这根节点左边则是左子树,右边则是右子树。递归处理即可。 代码 时空复杂度 主要是 slic
46.二叉树展开为链表
题目链接 解法1 暴力解法 思路 和之前链表的思路一致,先将节点缓存到数组当中。之后再去改变其结构。 不过要注意的是遍历的顺序是先序遍历。 代码 时空复杂度 时间复杂度:O(n) 空间复杂度:O(n)
45.二叉树的右视图
题目链接 解法1 层序遍历bfs 思路 右视图其实就是每一层的最后一个节点,这样我们可以通过层序遍历的方法,先把二叉树遍历出来形成一个二维数组。 而这个二维数组的每一维的最后一个数就是这个颗数的右视图
44.二叉搜索树中第 K 小的元素
题目链接 解法1 暴力解法 思路 根据二叉搜索树的特性,中序遍历出来的二叉搜索树是严格递增,于是我们可以在中序遍历的过程中去保存节点的值。最后通过找寻下标的方式去返回结果。 代码 时空复杂度 时间复杂
43.验证二叉搜索树
题目链接 解法1 递归 思路 验证二叉搜索树,可以参考验证对称二叉树的思想递归的去分解子问题。首先左子树的是二叉搜索树并且左子树的所有节点小于根节点,右子树也是二叉搜索树并且右子树的所有节点都大于根节
42.将有序数组转换为二叉搜索树
题目链接 解法 递归建树 思路 题目是要求构造一个平衡二叉树,那相对应的左右子树节点不能相差太多。而数组是有序的,那就应该取 中间元素 当根节点,左半边递归建左子树,右半边递归建右子树,这样就是平衡的
41.二叉树的层序遍历
题目链接 解法 bfs层序遍历 思路 使用队列遍历即可。 代码 时空复杂度 时间复杂度:O(n) 空间复杂度:O(n)
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 时应该保持原样。
下一页