代码随想录
文章平均质量分 70
Leetcode刷题
码农阿祖
前端学习中 & AIGC 爱好者
展开
-
【代码随想录21】回溯03
其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。,用以表示一个 IP 地址,返回所有可能的。返回的解集中,子集可以按。返回该数组所有可能的子集(幂集)。正好由四个整数(每个整数位于。之间组成,且不能含有前导。给定一个只包含数字的字符串。,这些地址可以通过在。原创 2024-07-27 00:21:52 · 304 阅读 · 0 评论 -
【代码随想录20】回溯02
如果至少一个数字的被选数量不同,则两种组合是不同的。中的每个数字在每个组合中只能使用。分割成一些子串,使每个子串都是。是正着读和反着读都一样的字符串。,并以列表形式返回。中可以使数字和为目标数。对于给定的输入,保证和为。给定一个候选人编号的集合。解集不能包含重复的组合。中所有可以使数字和为。所有可能的分割方案。原创 2024-07-25 19:44:13 · 329 阅读 · 0 评论 -
【代码随想录19】回溯01
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。该列表不能包含相同的组合两次,组合可以以任何顺序返回。的字符串,返回所有它能表示的字母组合。所有可能的有效组合的列表。原创 2024-07-24 18:41:27 · 480 阅读 · 0 评论 -
【代码随想录18】二叉树08
给你一个整数数组nums,其中元素已经按升序排列,请你将其转换为一棵高度平衡二叉搜索树。高度平衡二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。输入:nums = [-10,-3,0,5,9]输出:[0,-3,9,-10,null,5]输入:nums = [1,3]输出:[3,1]解释:[1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。nums按严格递增顺序排列。原创 2024-07-23 20:19:10 · 935 阅读 · 0 评论 -
【代码随想录17】二叉树07
给定二叉搜索树(BST)的根节点root和要插入树中的值value,将值插入二叉搜索树。返回插入后二叉搜索树的根节点。输入数据保证,新值和原始二叉搜索树中的任意节点值都不同。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。你可以返回任意有效的结果。输入:root = [4,2,7,1,3], val = 5输出:[4,2,7,1,3,5]输入:root = [40,20,60,10,30,50,70], val = 25。原创 2024-07-22 22:44:48 · 917 阅读 · 0 评论 -
【代码随想录16】二叉树06
给你一个含重复值的二叉搜索树(BST)的根节点root,找出并返回 BST 中的所有众数(即,出现频率最高的元素)。如果树中有不止一个众数,可以按任意顺序返回。结点左子树中所含节点的值小于等于当前节点的值结点右子树中所含节点的值大于等于当前节点的值左子树和右子树都是二叉搜索树输入:root = [1,null,2,2]输出:[2]输入:root = [0]输出:[0]树中节点的数目在范围[1, 104]内**进阶:**你可以不使用额外的空间吗?原创 2024-07-20 21:52:30 · 321 阅读 · 0 评论 -
【代码随想录05】二叉树05
给你两棵二叉树:root1和root2。想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为null 的节点将直接作为新二叉树的节点。返回合并后的二叉树。合并过程必须从两个树的根节点开始。输入:root1 = [1,3,2,5], root2 = [2,1,3,null,4,null,7]输出:[3,4,5,5,4,null,7]原创 2024-07-19 23:36:50 · 533 阅读 · 0 评论 -
【代码随想录14】二叉树04
的路径,这条路径上所有节点值相加等于目标和。是同一棵树的后序遍历,请你构造并返回这颗。路径总和等于给定目标和的路径。,请构造二叉树并返回其根节点。假设二叉树中至少有一个节点。和一个表示目标和的整数。是指没有子节点的节点。是指没有子节点的节点。是二叉树的中序遍历,原创 2024-07-18 22:01:50 · 628 阅读 · 0 评论 -
【代码随想录13】二叉树03
的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。给定一个二叉树,判断它是否是高度平衡的二叉树。的左右两个子树的高度差的绝对值不超过 1。,返回所有从根节点到叶子节点的路径。给你一个二叉树的根节点。是指没有子节点的节点。,返回所有左叶子之和。,求出该树的节点个数。原创 2024-07-17 21:16:05 · 501 阅读 · 0 评论 -
【代码随想录12】二叉树02
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。是指从根节点到最远叶子节点的最长路径上的节点数。**说明:**叶子节点是指没有子节点的节点。本题属于二叉树的基础题目,需要牢牢掌握。本题属于二叉树的基础题目,需要牢牢掌握。,翻转这棵二叉树,并返回其根节点。给定一个二叉树,找出其最小深度。给你一棵二叉树的根节点。给你一个二叉树的根节点。, 检查它是否轴对称。原创 2024-07-16 23:24:09 · 433 阅读 · 0 评论 -
【代码随想录11】二叉树01
本题属于二叉树的基础题目,需要牢牢掌握。本题属于二叉树的基础题目,需要牢牢掌握。本题属于二叉树的基础题目,需要牢牢掌握。给你一棵二叉树的根节点。给定一个二叉树的根节点。原创 2024-07-15 23:04:25 · 246 阅读 · 0 评论 -
【代码随想录10】栈与队列02
本题可以创建单调队列,队首始终是滑动窗口中最大的元素。在窗口移动时,如果移出的元素是最大元素,那么队首元素出列。如果移入的元素比队尾元素小,则队尾元素出列,直到比队尾元素大。这样就保证了队列的元素单调递减。可以保证给定的逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的。每个运算对象可以是整数,也可以是另一个逆波兰表达式。滑动窗口每次只向右移动一位。两个整数之间的除法只保留整数部分。原创 2024-07-12 22:18:40 · 351 阅读 · 0 评论 -
【代码随想录09】栈与队列01
给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(在完成所有重复项删除操作后返回最终的字符串。在 S 上反复执行重复项删除操作,直到无法继续删除。,判断字符串是否有效。原创 2024-07-12 22:16:03 · 264 阅读 · 0 评论 -
【代码随想录08】字符串part2
字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。输入:输入共包含两行,第一行为一个正整数 k,代表右旋转的位数。第二行为字符串 s,代表需要旋转的字符串。字符串的第一个匹配项的下标(下标从 0 开始)。输出:输出共一行,为进行了右旋转操作后的字符串。中使用至少一个空格将字符串中的。原创 2024-07-11 22:10:19 · 298 阅读 · 0 评论 -
【代码随想录07】344.反转字符串 541. 反转字符串II 54.替换数字
给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。例如,对于输入字符串 “a1b2c3”,函数应该将其转换为 “anumberbnumbercnumber”。编写一个函数,其作用是将输入的字符串反转过来。对于输入字符串 “a5b”,函数应该将其转换为 “anumberb”字符串有很多库函数可以用,对于字符串翻转的话,尽量还是不用库函数。输出:打印一个新的字符串,其中每个数字字符都被替换为了number。样例输入:a1b2c3。原创 2024-07-10 17:08:51 · 327 阅读 · 0 评论 -
【代码随想录06】454. 四数相加 II 383. 赎金信 15. 三数之和 18. 四数之和
中出现的次数,若出现value<0,则说明该字母magazine中没有。本题可以使用哈希法,先记录每个字母在。请你找出并返回满足下述全部条件且。答案中不可以包含重复的三元组。中出现的次数,再减去每个字母在。,请你计算有多少个元组。,判断是否存在三元组。,那么结果就加对应的。本题可以使用哈希表,原创 2024-07-09 19:24:50 · 291 阅读 · 0 评论 -
【代码随想录05】242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。本题可使用两个数组一个统计s的字母,一个统计t的字母。本题可使用哈希法判断sum是否重复出现。中每个字符出现的次数都相同,则称。输出结果中的每个元素一定是。本题可以使用Hashset解决。整数,并返回它们的数组下标。编写一个算法来判断一个数。,编写一个函数来判断。你可以按任意顺序返回答案。,请你在该数组中找出。原创 2024-07-08 22:18:59 · 384 阅读 · 0 评论 -
【代码随想录04】24. 两两交换链表中的节点 19. 删除链表的倒数第 N 个结点 面试题 02.07. 链表相交 142. 环形链表 II
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。因此可以利用两个链表的长度差让两个指针初始位置在公共节点前的相同位置,链表A长,就先移动指针a,链表B长,就先移动指针b。本题可以使用双指针法,快指针首先前进n次,随后快慢指针一起前进,当快指针到达末尾时,慢指针到达目标节点的前一个节点。,若链表内存在环,则快慢指针一定会相遇。就拿上图举例,快指针前进2次,随后快慢指针一起前进,当快指针到达5,慢指针到达3.,例如一个指针已经到公共链表,另一个还没到,这样就无法判断了。如果链表无环,则返回。原创 2024-07-06 21:50:06 · 677 阅读 · 0 评论 -
【代码随想录03】203.移除链表元素 707.设计链表 206. 反转链表
由于涉及头结点的删除,所以可以在头结点之前设置一个虚拟头结点,这样的话头结点的删除就可以其他节点的删除方法相同。您可以选择使用单链表或双链表。以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性。本题需要熟练运用双指针,并通过中间变量保存 next 值。本题考查链表的基本功,需要多加训练。,请你删除链表中所有满足。给你一个链表的头节点。原创 2024-07-05 18:06:32 · 467 阅读 · 0 评论 -
【代码随想录02】977.有序数组的平方 209.长度最小的子数组 59.螺旋矩阵II
时,此时的长度满足条件,但题目要求长度最小,因此需要与之前成立的长度进行比较,更新最小长度。法,在数组首尾各放置一个指针,比较指针元素平方后的值。较大者放入结果数组末端,同时该指针向中间移动,继续比较。将右指针设定为子数组的右端,左指针为左端。首先左指针不动,右指针右移,滑动窗口不断增长,和不断增加,当和。,并返回其长度**。**如果不存在符合条件的子数组,返回。由于本题的目标是连续子数组,所以可以想到使用。,将一圈分为上下左右 4 个左开右闭的区间。个正整数的数组和一个正整数。组成的新数组,要求也按。原创 2024-07-04 18:34:58 · 379 阅读 · 0 评论 -
【代码随想录01】704.二分查找 27.移除元素
所以可以考虑使用双指针法。首先快慢指针初始化 0,快指针前进,若指向元素不是 val,那么就修改慢指针指向元素为快指针元素,同时慢指针前进;若指向元素是 val,则跳过,继续前进,慢指针不动。由于数组是有序的,所以可以使用二分法。首先取数组中点位置,比较后确定目标值所在区间是左区间还是右区间,随后再取子区间的中点,不断二分,直到定位目标值。如此做,就可以跳过所有 val 元素,将所有非 val 元素挪到前面。最后运行结束,此时慢指针的位置就是所有非 val 元素的数量。的元素,并返回移除后数组的新长度。原创 2024-07-04 18:33:19 · 300 阅读 · 0 评论 -
【代码随想录26】332.重新安排行程 51.N皇后 37.解数独
假定所有机票至少存在一种合理的行程。且所有的机票 必须都用一次 且 只能用一次。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。如果存在多种有效的行程,请你按字典排序返回最小的行程组合。表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。(肯尼迪国际机场)出发的先生,所以该行程必须从。的棋盘上,并且使皇后彼此之间不能相互攻击。编写一个程序,通过填充空格来解决数独问题。的棋子放置方案,该方案中。所有这些机票都属于一个从。每一种解法包含一个不同的。分别代表了皇后和空位。原创 2024-02-08 19:52:36 · 429 阅读 · 0 评论 -
【代码随想录25】491.非递减子序列 46.全排列 47.全排列II
数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。,找出并返回所有该数组中不同的递增子序列,递增子序列中。给定一个可包含重复数字的序列。给定一个不含重复数字的数组。返回所有不重复的全排列。原创 2024-02-07 21:39:37 · 369 阅读 · 0 评论 -
【代码随想录24】93.复原 IP 地址 78.子集 90.子集II
其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。,用以表示一个 IP 地址,返回所有可能的。返回的解集中,子集可以按。返回该数组所有可能的子集(幂集)。正好由四个整数(每个整数位于。之间组成,且不能含有前导。给定一个只包含数字的字符串。,这些地址可以通过在。原创 2024-02-06 21:48:45 · 780 阅读 · 0 评论 -
【代码随想录23】39.组合总和 40.组合总和II 131.分割回文串
如果至少一个数字的被选数量不同,则两种组合是不同的。中的每个数字在每个组合中只能使用。分割成一些子串,使每个子串都是。是正着读和反着读都一样的字符串。,并以列表形式返回。中可以使数字和为目标数。对于给定的输入,保证和为。给定一个候选人编号的集合。解集不能包含重复的组合。中所有可以使数字和为。所有可能的分割方案。原创 2024-02-05 19:29:31 · 385 阅读 · 0 评论 -
【代码随想录22】216.组合总和III 17.电话号码的组合
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。该列表不能包含相同的组合两次,组合可以以任何顺序返回。的字符串,返回所有它能表示的字母组合。所有可能的有效组合的列表。原创 2024-02-03 21:17:05 · 358 阅读 · 0 评论 -
【代码随想录21】77.组合
【代码】【代码随想录21】77.组合。原创 2024-02-02 21:57:53 · 364 阅读 · 0 评论 -
【代码随想录20】669.修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树
给你一个整数数组nums,其中元素已经按升序排列,请你将其转换为一棵高度平衡二叉搜索树。高度平衡二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。输入:nums = [-10,-3,0,5,9]输出:[0,-3,9,-10,null,5]输入:nums = [1,3]输出:[3,1]解释:[1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。nums按严格递增顺序排列。原创 2024-02-01 21:27:55 · 425 阅读 · 0 评论 -
【代码随想录19】235.二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点
给定二叉搜索树(BST)的根节点root和要插入树中的值value,将值插入二叉搜索树。返回插入后二叉搜索树的根节点。输入数据保证,新值和原始二叉搜索树中的任意节点值都不同。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。你可以返回任意有效的结果。输入:root = [4,2,7,1,3], val = 5输出:[4,2,7,1,3,5]输入:root = [40,20,60,10,30,50,70], val = 25。原创 2024-01-31 20:46:53 · 782 阅读 · 0 评论 -
【代码随想录18】530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236.二叉树的最近公共祖先
给你一个含重复值的二叉搜索树(BST)的根节点root,找出并返回 BST 中的所有众数(即,出现频率最高的元素)。如果树中有不止一个众数,可以按任意顺序返回。结点左子树中所含节点的值小于等于当前节点的值结点右子树中所含节点的值大于等于当前节点的值左子树和右子树都是二叉搜索树输入:root = [1,null,2,2]输出:[2]输入:root = [0]输出:[0]树中节点的数目在范围[1, 104]内**进阶:**你可以不使用额外的空间吗?原创 2024-01-30 19:04:54 · 380 阅读 · 0 评论 -
【代码随想录17】654.最大二叉树 617.合并二叉树 700.二叉搜索树中的搜索 98.验证二叉搜索树
给你两棵二叉树:root1和root2。想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为null 的节点将直接作为新二叉树的节点。返回合并后的二叉树。合并过程必须从两个树的根节点开始。输入:root1 = [1,3,2,5], root2 = [2,1,3,null,4,null,7]输出:[3,4,5,5,4,null,7]原创 2024-01-30 13:42:49 · 529 阅读 · 0 评论 -
【代码随想录16】513.找树左下角的值 112. 路径总和 113.路径总和ii 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树
的路径,这条路径上所有节点值相加等于目标和。是同一棵树的后序遍历,请你构造并返回这颗。路径总和等于给定目标和的路径。,请构造二叉树并返回其根节点。假设二叉树中至少有一个节点。和一个表示目标和的整数。是指没有子节点的节点。是指没有子节点的节点。是二叉树的中序遍历,原创 2024-01-27 21:06:03 · 766 阅读 · 0 评论 -
【代码随想录15】110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和
给定一个二叉树,判断它是否是高度平衡的二叉树。的左右两个子树的高度差的绝对值不超过 1。,返回所有从根节点到叶子节点的路径。给你一个二叉树的根节点。是指没有子节点的节点。,返回所有左叶子之和。原创 2024-01-26 23:36:38 · 403 阅读 · 0 评论 -
【代码随想录14】104.二叉树的最大深度 111.二叉树的最小深度 222.完全二叉树的节点个数
的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。是指从根节点到最远叶子节点的最长路径上的节点数。**说明:**叶子节点是指没有子节点的节点。给定一个二叉树,找出其最小深度。,求出该树的节点个数。原创 2024-01-25 22:45:25 · 619 阅读 · 0 评论 -
【代码随想录13】102. 二叉树的层序遍历 226. 翻转二叉树 101. 对称二叉树
(即逐层地,从左到右访问所有节点)。本题属于二叉树的基础题目,需要牢牢掌握。本题属于二叉树的基础题目,需要牢牢掌握。本题属于二叉树的基础题目,需要牢牢掌握。,翻转这棵二叉树,并返回其根节点。给你一棵二叉树的根节点。给你一个二叉树的根节点。, 检查它是否轴对称。原创 2024-01-24 21:42:13 · 379 阅读 · 0 评论 -
【代码随想录12】144. 二叉树的前序遍历 145. 二叉树的后序遍历 94. 二叉树的中序遍历
本题属于二叉树的基础题目,需要牢牢掌握。本题属于二叉树的基础题目,需要牢牢掌握。本题属于二叉树的基础题目,需要牢牢掌握。给你一棵二叉树的根节点。给定一个二叉树的根节点。原创 2024-01-23 23:30:11 · 351 阅读 · 0 评论 -
【代码随想录11】239. 滑动窗口最大值 347. 前 K 个高频元素
本题可以创建单调队列,队首始终是滑动窗口中最大的元素。在窗口移动时,如果移出的元素是最大元素,那么队首元素出列。如果移入的元素比队尾元素小,则队尾元素出列,直到比队尾元素大。这样就保证了队列的元素单调递减。的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的。滑动窗口每次只向右移动一位。,请你返回其中出现频率前。原创 2024-01-22 12:02:16 · 438 阅读 · 0 评论 -
【代码随想录10】20. 有效的括号 1047. 删除字符串中的所有相邻重复项 150. 逆波兰表达式求值
可以保证给定的逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在完成所有重复项删除操作后返回最终的字符串。每个运算对象可以是整数,也可以是另一个逆波兰表达式。在 S 上反复执行重复项删除操作,直到无法继续删除。两个整数之间的除法只保留整数部分。,判断字符串是否有效。原创 2024-01-21 14:10:48 · 331 阅读 · 0 评论 -
【代码随想录09】28. 找出字符串中第一个匹配项的下标 459. 重复的子字符串
字符串的第一个匹配项的下标(下标从 0 开始)。,检查是否可以通过由它的一个子串重复多次构成。给定一个非空的字符串。原创 2024-01-21 14:08:56 · 361 阅读 · 0 评论 -
【代码随想录08】232. 用栈实现队列 225. 用队列实现栈
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(原创 2024-01-19 21:35:12 · 377 阅读 · 0 评论