- 博客(206)
- 收藏
- 关注
原创 LeetCode51:N皇后
每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。
2024-04-26 10:06:11 62
原创 LeetCode47:全排列②
给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。因为存在去重操作,因此要注重树层上的去重操作。全排列的树层去重操作。
2024-04-25 11:07:55 127
原创 LeetCode46:全排列
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列。你可以 按任意顺序 返回答案。使用used记录元素是否使用过,排列是有序的,要注意与组合的区别。
2024-04-25 10:18:52 112
原创 LeetCode491:非递减子序列
给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素。你可以按 任意顺序 返回答案。数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。
2024-04-25 10:17:03 64
原创 LeetCode90:子集②
给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的。解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。
2024-04-24 09:31:02 128
原创 LeetCode78:子集
给你一个整数数组 nums ,数组中的元素 互不相同。返回该数组所有可能的。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。
2024-04-24 09:01:51 213
原创 LeetCode93:复原IP地址
给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址可以通过在 s 中插入 ‘.’ 来形成。你可以按 任何 顺序返回答案。例如:“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址,但是 “0.011.255.245”、“192.168.1.312” 和 “[email protected]” 是 无效 IP 地址。有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 ‘.’ 分隔。
2024-04-23 10:49:09 230
原创 LeetCode40:组合总和②
给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用 一次。使用回溯思想,可能会出现重复的,需要进行去重操作。注意:解集不能包含重复的组合。
2024-04-22 09:52:21 222
原创 LeetCode39:组合总和
给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。如果至少一个数字的被选数量不同,则两种组合是不同的。上个代码对于sum已经大于target的情况,其实是依然进入了下一层递归,只是下一层递归结束判断的时候,会判断sum > target的话就返回。对于给定的输入,保证和为 target 的不同组合数少于 150 个。
2024-04-22 09:50:27 224
原创 LeetCode:电话号码的字母组合
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
2024-04-20 11:29:42 193
原创 LeetCode216:组合总和Ⅲ
返回 所有可能的有效组合的列表。该列表不能包含相同的组合两次,组合可以以任何顺序返回。每个数字 最多使用一次。
2024-04-20 10:44:25 251
原创 LeetCode538:把二叉搜索树转换为累加树
给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。节点的左子树仅包含键 小于 节点键的节点。节点的右子树仅包含键 大于 节点键的节点。左右子树也必须是二叉搜索树。使用右中左的遍历顺序。
2024-04-18 10:00:33 104
原创 LeetCode669:修剪二叉搜索树
给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。可以证明,存在 唯一的答案。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。
2024-04-18 09:12:24 245
原创 LeetCode450:删除二叉搜索树中的节点
给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。首先找到需要删除的节点;如果找到了,删除它。
2024-04-17 10:21:03 241
原创 LeetCode701:二叉搜索树中的插入操作
给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。返回插入后二叉搜索树的根节点。输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。
2024-04-17 09:11:33 202
原创 LeetCode235:二叉搜索树的最近公共祖先
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。
2024-04-16 10:00:06 199
原创 LeetCode236:二叉树的最近公共祖先
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。使用后序遍历和回溯的思想。
2024-04-16 09:26:29 346
原创 LeetCode501:二叉搜索树中的众数
给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。如果树中有不止一个众数,可以按 任意顺序 返回。结点左子树中所含节点的值 小于等于 当前节点的值。结点右子树中所含节点的值 大于等于 当前节点的值。左子树和右子树都是二叉搜索树。
2024-04-15 09:48:11 153
原创 LeetCode530:二叉搜索树的最小绝对差
给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值。差值是一个正数,其数值等于两值之差的绝对值。使用双指针,不用开辟新的空间。
2024-04-15 08:42:31 110
原创 LeetCode700:验证二叉搜索树
给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。所有左子树和右子树自身必须也是二叉搜索树。节点的右子树只包含 大于 当前节点的数。只包含 小于 当前节点的数。使用中序遍历是有序的特性。
2024-04-13 10:08:17 152
原创 LeetCode700:二叉搜索树中的搜索
你需要在 BST 中找到节点值等于 val 的节点。返回以该节点为根的子树。如果节点不存在,则返回 null。给定二叉搜索树(BST)的根节点 root 和一个整数值 val。
2024-04-13 09:11:22 201
原创 LeetCode617:合并二叉树
想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。给你两棵二叉树: root1 和 root2。注意: 合并过程必须从两个树的根节点开始。返回合并后的二叉树。
2024-04-12 09:34:46 248
原创 LeetCode654:最大二叉树
给定一个不重复的整数数组 nums。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最大值 右边 的 子数组后缀上 构建右子树。创建一个根节点,其值为 nums 中的最大值。返回 nums 构建的 最大二叉树。
2024-04-12 09:12:05 210
原创 LeetCode106:从中序与后序遍历序列构造二叉树
给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树。第四步:切割中序数组,切成中序左数组和中序右数组 (顺序别搞反了,一定是先切中序数组)第二步:如果不为空,那么取后序数组最后一个元素作为节点元素。第三步:找到后序数组最后一个元素在中序数组的位置,作为切割点。第五步:切割后序数组,切成后序左数组和后序右数组。第一步:如果数组大小为零的话,说明是空节点了。
2024-04-11 10:19:57 255
原创 LeetCode112:路径总和
给你二叉树的根节点 root 和一个表示目标和的整数 targetSum。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum。如果存在,返回 true;否则,返回 false。叶子节点 是指没有子节点的节点。需要遍历所有的路径,不推荐。
2024-04-11 09:36:39 191
原创 LeetCode513:找树左下角的值
给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。假设二叉树中至少有一个节点。
2024-04-10 10:04:21 229
原创 LeetCode257:二叉树的所有路径
给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。叶子节点 是指没有子节点的节点。
2024-04-09 20:49:30 175
原创 LeetCode222:完全二叉树节点的数量
完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。使用常规二叉树的思想,直接遍历二叉树。使用完全二叉树的性质。
2024-04-02 20:39:38 259
原创 LeetCode111:二叉树的最小深度
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。给定一个二叉树,找出其最小深度。
2024-04-01 09:49:24 198
原创 LeetCode104:二叉树的最大深度
二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。使用递归:后序遍历,求高度。给定一个二叉树 root ,返回其最大深度。
2024-04-01 09:47:41 230
原创 LeetCode239:滑动窗口最大值
给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。push(value):如果push的元素value大于入口元素的数值,那么就将队列入口的元素弹出,直到push元素的数值小于等于队列入口元素的数值为止。pop(value):如果窗口移除的元素value等于单调队列的出口元素,那么队列弹出元素,否则不用任何操作。输入:nums = [1,3,-1,-3,5,3,6,7], k = 3。输出:[3,3,5,5,6,7]
2024-03-26 09:45:56 230
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人