LeetCode 随笔
文章平均质量分 75
LeetCode 刷题笔记
不会写代码的里奇
这个作者很懒,什么都没留下…
展开
-
LeetCode 39. 组合总和
给你一个的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有,并以列表形式返回。你可以按返回这些组合。candidates 中的数字可以。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为 target 的不同组合数少于 150 个。原创 2024-05-20 20:32:42 · 285 阅读 · 0 评论 -
LeetCode 17.电话号码的字母组合
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。原创 2024-05-20 20:30:11 · 475 阅读 · 0 评论 -
LeetCode 216.组合总和III
找出所有相加之和为 n 的 k 个数的组合,且满足下列条件:● 只使用数字1到9● 每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。原创 2024-05-19 20:40:46 · 180 阅读 · 0 评论 -
LeetCode 77. 组合
给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。原创 2024-05-19 19:59:05 · 341 阅读 · 0 评论 -
LeetCode 538.把二叉搜索树转换为累加树
给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。原创 2024-05-18 12:26:50 · 836 阅读 · 0 评论 -
LeetCode 108.将有序数组转换为二叉搜索树
给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 平衡 二叉搜索树。原创 2024-05-18 12:24:17 · 810 阅读 · 0 评论 -
LeetCode 669. 修剪二叉搜索树
给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。 可以证明,存在 唯一的答案 。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。原创 2024-05-17 20:39:26 · 941 阅读 · 0 评论 -
LeetCode 450.删除二叉搜索树中的节点
给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤:1. 首先找到需要删除的节点;2. 如果找到了,删除它。原创 2024-05-17 20:37:49 · 972 阅读 · 0 评论 -
LeetCode 701.二叉搜索树中的插入操作
给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回 任意有效的结果 。原创 2024-05-16 20:31:38 · 880 阅读 · 0 评论 -
LeetCode 235. 二叉搜索树的最近公共祖先
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”原创 2024-05-16 17:27:04 · 686 阅读 · 0 评论 -
LeetCode 236. 二叉树的最近公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”原创 2024-05-16 15:44:27 · 482 阅读 · 0 评论 -
LeetCode 501. 二叉搜索树中的众数
给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。如果树中有不止一个众数,可以按 任意顺序 返回。假定 BST 满足如下定义:结点左子树中所含节点的值 小于等于 当前节点的值结点右子树中所含节点的值 大于等于 当前节点的值左子树和右子树都是二叉搜索树原创 2024-05-14 22:55:18 · 231 阅读 · 0 评论 -
LeetCode 530. 二叉搜索树的最小绝对差 || LeetCode 783. 二叉搜索树节点最小距离
给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。差值是一个正数,其数值等于两值之差的绝对值。原创 2024-05-14 22:30:46 · 494 阅读 · 0 评论 -
LeetCode 700.二叉搜索树中的搜索
给定二叉搜索树(BST)的根节点 root 和一个整数值 val。你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null 。原创 2024-05-13 23:02:27 · 585 阅读 · 0 评论 -
LeetCode 98. 验证二叉搜索树
给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。原创 2024-05-13 22:51:37 · 686 阅读 · 0 评论 -
LeetCode 617.合并二叉树
给你两棵二叉树: root1 和 root2 。想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。返回合并后的二叉树。注意: 合并过程必须从两个树的根节点开始。原创 2024-05-12 20:32:32 · 862 阅读 · 1 评论 -
LeetCode 654.最大二叉树
给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建:创建一个根节点,其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最大值 右边 的 子数组后缀上 构建右子树。返回 nums 构建的 最大二叉树 。原创 2024-05-12 20:30:11 · 615 阅读 · 0 评论 -
LeetCode 105.从前序与中序遍历序列构造二叉树
给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。原创 2024-05-11 23:12:42 · 842 阅读 · 0 评论 -
LeetCode 106.从中序与后序遍历序列构造二叉树
给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。原创 2024-05-11 23:01:22 · 1377 阅读 · 0 评论 -
LeetCode 112. 路径总和 || LeetCode 113. 路径总和ii
给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。叶子节点 是指没有子节点的节点。原创 2024-05-10 23:40:00 · 1145 阅读 · 0 评论 -
LeetCode 513.找树左下角的值
给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。假设二叉树中至少有一个节点。原创 2024-05-10 18:23:44 · 869 阅读 · 0 评论 -
LeetCode 404.左叶子之和
给定二叉树的根节点 root ,返回所有左叶子之和。原创 2024-05-09 23:52:04 · 410 阅读 · 0 评论 -
LeetCode 257. 二叉树的所有路径
给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。叶子节点 是指没有子节点的节点。原创 2024-05-09 22:59:08 · 444 阅读 · 0 评论 -
LeetCode 110. 平衡二叉树
给定一个二叉树,判断它是否是 平衡二叉树原创 2024-05-08 21:34:50 · 483 阅读 · 0 评论 -
LeetCode 222.完全二叉树的节点个数
给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。原创 2024-05-08 20:32:34 · 567 阅读 · 0 评论 -
LeetCode 111.二叉树的最小深度
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。原创 2024-05-07 20:35:15 · 321 阅读 · 0 评论 -
LeetCode 101.对称二叉树
给定一个二叉树 root ,返回其最大深度。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。原创 2024-05-07 20:32:11 · 212 阅读 · 0 评论 -
LeetCode 101.对称二叉树
给你一个二叉树的根节点 root , 检查它是否轴对称。原创 2024-05-06 23:11:36 · 386 阅读 · 1 评论 -
LeetCode 226.翻转二叉树(全网最多的解法)
给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。原创 2024-05-06 22:55:51 · 1155 阅读 · 1 评论 -
二叉树的统一迭代法 | LeetCode 144. 二叉树的前序遍历、LeetCode 94. 二叉树的中序遍历、LeetCode 145. 二叉树的后序遍历
给你二叉树的根节点 root ,返回它节点值的 前序 遍历。给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。给你二叉树的根节点 root ,返回它节点值的 前序 遍历。原创 2024-05-05 22:31:17 · 625 阅读 · 0 评论 -
二叉树的迭代遍历 | LeetCode 144. 二叉树的前序遍历、LeetCode 94. 二叉树的中序遍历、LeetCode 145. 二叉树的后序遍历
给你二叉树的根节点 root ,返回它节点值的 前序 遍历。给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。给你二叉树的根节点 root ,返回它节点值的 前序 遍历。原创 2024-05-04 21:38:37 · 661 阅读 · 0 评论 -
二叉树的递归遍历 | LeetCode 144. 二叉树的前序遍历、LeetCode 94. 二叉树的中序遍历、LeetCode 145. 二叉树的后序遍历
给你二叉树的根节点 root ,返回它节点值的 前序 遍历。给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。给你二叉树的根节点 root ,返回它节点值的 前序 遍历。原创 2024-05-04 21:17:29 · 1091 阅读 · 0 评论 -
LeetCode 347. 前 K 个高频元素
给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。原创 2024-04-29 22:35:48 · 156 阅读 · 0 评论 -
LeetCode 239. 滑动窗口最大值
给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回 滑动窗口中的最大值 。原创 2024-04-29 22:05:14 · 1162 阅读 · 0 评论 -
LeetCode 150. 逆波兰表达式求值
给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。请你计算该表达式。返回一个表示表达式值的整数。原创 2024-04-28 21:10:51 · 884 阅读 · 0 评论 -
LeetCode 1047. 删除字符串中的所有相邻重复项
给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。原创 2024-04-28 21:08:51 · 491 阅读 · 0 评论 -
LeetCode 20. 有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。原创 2024-04-27 22:29:35 · 596 阅读 · 0 评论 -
LeetCode 225. 用队列实现栈
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类:void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() 返回栈顶元素。boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。原创 2024-04-27 20:27:47 · 1250 阅读 · 0 评论 -
LeetCode 232. 用栈实现队列
请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:● void push(int x) 将元素 x 推到队列的末尾● int pop() 从队列的开头移除并返回元素● int peek() 返回队列开头的元素● boolean empty() 如果队列为空,返回 true ;否则,返回 false原创 2024-04-25 21:57:37 · 348 阅读 · 0 评论 -
LeetCode 151. 反转字符串中的单词
给你一个字符串 s ,请你反转字符串中 单词 的顺序。单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。原创 2024-04-25 21:52:56 · 431 阅读 · 0 评论