02 2023 档案

摘要:题目链接 990. 等式方程的可满足性 思路 并查集模板题,模板可以参考 常用算法模板。将字母视为结点,== 表示有路径,!= 表示无路径。 遍历 x == y,建立图前驱关系 遍历 x != y,检查是否和前驱关系对应 如果不对应,立即返回 false 全部遍历完成说明没有问题,返回 true 代 阅读全文
posted @ 2023-02-28 21:04 Frodo1124 阅读(35) 评论(0) 推荐(0) 编辑
摘要:题目链接 1094. 拼车 思路 与 【扫描线】LeetCode 253. 会议室 II 思路一致 代码 class Solution { public boolean carPooling(int[][] trips, int capacity) { int[] temp = new int[10 阅读全文
posted @ 2023-02-28 16:41 Frodo1124 阅读(28) 评论(0) 推荐(0) 编辑
摘要:题目链接 253. 会议室 II 思路 这道题非常类似于坐公交车上下车。 样例中 intervals = [[0,30],[5,10],[15,20]] 可以这么拆解 上车:[0, +1], [5, +1], [15, +1] 下车:[10, -1], [20, -1], [30, -1] 我们可以 阅读全文
posted @ 2023-02-28 16:30 Frodo1124 阅读(190) 评论(0) 推荐(0) 编辑
摘要:题目链接 856. 括号的分数 思路 我们通过观察发现,() 是唯一贡献分数的结构,外括号只是为该结构添加了一些乘数。所以我们只需要关心 ()。 我们用 d 维护当前括号的深度,对于每个 ( 我们将深度加一,对于每个 ),我们将深度减一。当我们遇到 () 时,我们将 2d 加到答案中。 我们举 阅读全文
posted @ 2023-02-28 15:10 Frodo1124 阅读(34) 评论(0) 推荐(0) 编辑
摘要:题目链接 22. 括号生成 思路 使用 DFS 和贪心的思想,如果左括号的数量不够就优先放置左括号,然后再放置右括号。 代码 class Solution { private List<String> result = new ArrayList<>(); public List<String> g 阅读全文
posted @ 2023-02-28 13:58 Frodo1124 阅读(33) 评论(0) 推荐(0) 编辑
摘要:题目链接 291. 单词规律 II 思路 定义一个全局 HashMap<Character, String> 来存储映射关系,key 为 pattern 的字符,value 为 str 的子串。 一开始,map 中没有任何映射关系。 把 pattern = "abab" 的第一个字符 'a' 和 s 阅读全文
posted @ 2023-02-27 14:08 Frodo1124 阅读(60) 评论(0) 推荐(0) 编辑
摘要:题目链接 52. N 皇后 II 思路 与 【DFS】LeetCode 51. N 皇后 一致 代码 class Solution { private int result; private boolean[] mainDiag; private boolean[] subDiag; private 阅读全文
posted @ 2023-02-27 09:19 Frodo1124 阅读(20) 评论(0) 推荐(0) 编辑
摘要:题目链接 51. N 皇后 思路 使用三个数组分别记录列、主对角线、副对角线的可放置状态。因为是按行进行搜索,在当前行放置后必进入下一行,所以不用记录行的状态。 private boolean[] mainDiagonal; private boolean[] subDiagonal; privat 阅读全文
posted @ 2023-02-27 08:37 Frodo1124 阅读(24) 评论(0) 推荐(0) 编辑
摘要:题目链接 394. 字符串解码 思路 建立一个数字栈 numStack 和一个字符串栈 stringBuilderStack。遍历字符串 s: 遇到数字和字符时按照相应规则分别累加进 k 和 result 中。 遇到 [ 时将 k 和 result 的值压入栈中并清空变量。 遇到 ] 时将两个栈的栈 阅读全文
posted @ 2023-02-13 19:17 Frodo1124 阅读(28) 评论(0) 推荐(0) 编辑
摘要:题目链接 341. 扁平化嵌套列表迭代器 思路 遍历 nestedList,碰见子列表便将该子列表传入下一层递归中遍历,直到遍历完所有元素。 代码 class NestedIterator implements Iterator<Integer> { ArrayList<Integer> resul 阅读全文
posted @ 2023-02-13 10:53 Frodo1124 阅读(29) 评论(0) 推荐(0) 编辑
摘要:题目链接 108. 将有序数组转换为二叉搜索树 思路 类似于二分搜索,定位到数组中间 mid,然后左边的子数组构成左子树,右边的子数组构成右子树,mid 处的数字构成根结点。递归构建左右子树即可,最后返回 root。 代码 class Solution { public TreeNode sorte 阅读全文
posted @ 2023-02-12 19:37 Frodo1124 阅读(22) 评论(0) 推荐(0) 编辑
摘要:题目链接 669. 修剪二叉搜索树 思路 若 root.val 小于边界值 low,则 root 的左子树必然均小于边界值,我们递归处理 root.right 即可; 若 root.val 大于边界值 high,则 root 的右子树必然均大于边界值,我们递归处理 root.left 即可; 若 r 阅读全文
posted @ 2023-02-12 19:19 Frodo1124 阅读(22) 评论(0) 推荐(0) 编辑
摘要:题目链接 98. 验证二叉搜索树 思路 依据 BST 的定义:左子树的结点都比根结点小,右子树的结点都比根结点大。我们在递归过程中传递根节点的值,判断当前结点值与根结点值的大小关系。 代码 class Solution { public boolean isValidBST(TreeNode roo 阅读全文
posted @ 2023-02-12 17:53 Frodo1124 阅读(19) 评论(0) 推荐(0) 编辑
摘要:题目链接 230. 二叉搜索树中第K小的元素 思路 利用 BST 中序遍历是有序的特点,同时每遍历完一个结点将 k--,当 k = 0 的时候,当前结点是第 k 个结点 代码 class Solution { private int k; private int result; public int 阅读全文
posted @ 2023-02-12 15:38 Frodo1124 阅读(25) 评论(0) 推荐(0) 编辑
摘要:题目链接 863. 二叉树中所有距离为 K 的结点 思路 因为在二叉树中,每个结点至多连接三条边,并且其中两条已经通过左右子结点的形式给出,所以我们只需要记录每个结点的父结点即可。 使用 Map 记录每个结点的父结点,再直接以 target 作为源点开始 DFS,记录与 target 距离为 k 的 阅读全文
posted @ 2023-02-04 11:37 Frodo1124 阅读(20) 评论(0) 推荐(0) 编辑
摘要:题目链接 572. 另一棵树的子树 思路 判断两个树是否相等的三个条件是与的关系,即: 当前两个树的根节点值相等; 并且,s 的左子树和 t 的左子树相等; 并且,s 的右子树和 t 的右子树相等。 而判断 subRoot 是否为 root 的子树的三个条件是或的关系,即: 当前两棵树相等; 或者, 阅读全文
posted @ 2023-02-03 17:22 Frodo1124 阅读(21) 评论(0) 推荐(0) 编辑
摘要:题目链接 104. 二叉树的最大深度 思路 递归求左右子树的最大深度并取最大值,返回值在最大值上+1。 递归终止条件为 root == null,此时返回 0。 代码 class Solution { public int maxDepth(TreeNode root) { if(root == n 阅读全文
posted @ 2023-02-03 14:33 Frodo1124 阅读(22) 评论(0) 推荐(0) 编辑
摘要:题目链接 105. 从前序与中序遍历序列构造二叉树 思路 先序遍历的顺序是根左右,中序遍历的顺序是左根右,所以在 preorder 数组中的首元素一定是当前树的树根,再从 inorder 数组中找到这个元素的下标 index,这样 index 的左边是左子树,右边是右子树。之后再分别递归建立左右子树 阅读全文
posted @ 2023-02-03 14:28 Frodo1124 阅读(29) 评论(0) 推荐(0) 编辑
摘要:题目链接 235. 二叉搜索树的最近公共祖先 思路 与 【DFS】LeetCode 236. 二叉树的最近公共祖先 一模一样 代码 class Solution { public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, Tre 阅读全文
posted @ 2023-02-03 12:11 Frodo1124 阅读(14) 评论(0) 推荐(0) 编辑
摘要:题目链接 236. 二叉树的最近公共祖先 思路 代码 class Solution { public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { if(root == null || root == p 阅读全文
posted @ 2023-02-03 10:47 Frodo1124 阅读(30) 评论(0) 推荐(0) 编辑
摘要:题目链接 124. 二叉树中的最大路径和 思路 一个子树内部的最大路径和 = 左子树提供的最大路径和 + 根节点值 + 右子树提供的最大路径和。即 dfs(root.left)+root.val+dfs(root.right) 定义dfs函数:返回当前子树能向父节点“提供”的最大路径和。即,一条从父 阅读全文
posted @ 2023-02-02 10:48 Frodo1124 阅读(49) 评论(0) 推荐(0) 编辑
摘要:题目链接 314. 二叉树的垂直遍历 思路 如图所示,可以对输出列次顺序作如下标记。 将每一列的列号作为 key,同时将该列的所有结点组成的 List 作为 value,使用 HashMap<Integer, ArrayList<Integer>> 进行存储。 注意: 在进行 BFS 的过程中要存储 阅读全文
posted @ 2023-02-01 19:54 Frodo1124 阅读(94) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示