- 博客(26)
- 收藏
- 关注
原创 代码随想录算法训练营Day26 | Leetcode 452. 用最少数量的箭引爆气球、435. 无重叠区间、763.划分字母区间
例如,字符串 “ababcc” 能够被分为 [“abab”, “cc”],但类似 [“aba”, “bcc”] 或 [“ab”, “ab”, “cc”] 的划分是非法的。非常像,弓箭的数量就相当于是非交叉区间的数量,只要把弓箭那道题目代码里射爆气球的判断条件加个等号(认为 [0,1] [1,2] 不是相邻区间),然后用总区间数减去弓箭数量就是要移除的区间数量了。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s。例如 [1, 2] 和 [2, 3] 是不重叠的。
2025-04-10 16:46:21
510
原创 代码随想录算法训练营Day25 | Leetcode 134. 加油站、135. 分发糖果、860.柠檬水找零、406.根据身高重建队列
返回的队列应该格式化为数组 queue ,其中 queue[j] = [hj, kj] 是队列中第 j 个人的属性(queue[0] 是排在队列前面的人)。注意,一开始你手头没有任何零钱。给你一个整数数组 bills ,其中 bills[i] 是第 i 位顾客付的账。给定两个整数数组 gas 和 cost ,如果你可以按顺序绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。账单是20,优先消耗一个10和一个5:因为美元10只能给账单20找零,而美元5可以给账单10和账单20找零,美元5更万能!
2025-04-10 08:00:00
789
原创 代码随想录算法训练营Day24 | Leetcode 122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II、1005.K次取反后最大化的数组和
每个元素 nums[i] 表示从索引 i 向后跳转的最大长度。给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。判断你是否能够到达最后一个下标,如果可以,返回 true;给定一个长度为 n 的 0 索引整数数组 nums。在每一天,你可以决定是否购买和/或出售股票。数组中的每个元素代表你在该位置可以跳跃的最大长度。给你一个非负整数数组 nums ,你最初位于数组的。生成的测试用例可以到达 nums[n - 1]。说明: 假设你总是可以到达数组的最后一个位置。
2025-04-09 20:36:47
699
原创 代码随想录算法训练营Day23 | Leetcode 455分发饼干、376摆动序列、53最大子序和
对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j]。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是满足尽可能多的孩子,并输出这个最大数值。给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。假设你是一位很棒的家长,想要给你的孩子们一些小饼干。可以通过从原始序列中删除一些(也可以不删除)元素来获得,剩下的元素保持其原始顺序。
2025-04-09 19:47:20
558
原创 代码随想录算法训练营Day22 | Leetcode 491递增子序列、46全排列、47全排列 II
给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。的数组 nums ,返回其 所有可能的全排列。的序列 nums ,按任意顺序。回溯(利用 set 去重)回溯(使用 used)
2025-04-08 16:23:39
986
原创 代码随想录算法训练营Day21 | Leetcode 93复原IP地址、78子集、90子集II
正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 ‘.’ 分隔。给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的 子集(幂集)。如果把 子集问题、组合问题、分割问题都抽象为一棵树的话,那么组合问题和分割问题都是。给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的。,这些地址可以通过在 s 中插入 ‘.’ 来形成。给你一个整数数组 nums ,数组中的元素。返回的解集中,子集可以按。返回该数组所有可能的子集(幂集)。
2025-04-06 11:48:51
903
原创 代码随想录算法训练营Day20 | Leetcode 39组合总和、40组合总和II、131分割回文串
给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。:可以使用双指针法,一个指针从前向后,一个指针从后向前,如果前后指针所指向的元素是相等的,就是回文字符串了。解集不能包含重复的组合。如果至少一个数字的被选数量不同,则两种组合是不同的。
2025-04-05 16:30:48
1098
原创 代码随想录算法训练营Day19 | Leetcode 77组合、216组合总和III、17电话号码的字母组合
给你一个字符串 s,请你将 s 分割成一些 子串,使每个子串都是 回文串。返回 s 所有可能的分割方案。每次从集合中选取元素,可选择的范围随着选择的进行而收缩,调整可选择的范围。返回 所有可能的有效组合的列表。该列表不能包含相同的组合两次,组合可以以任何顺序返回。给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。图中每次搜索到了叶子节点,我们就找到了一个结果。
2025-04-03 23:47:04
477
原创 代码随想录算法训练营Day18 | Leetcode 669修剪二叉搜索树、108将有序数组转换为二叉搜索树、538把二叉搜索树转换为累加树
给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中。改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。node.val 的值之和。
2025-04-02 16:03:32
855
原创 代码随想录算法训练营Day17 | Leetcode 235二叉搜索树的最近公共祖先、701二叉搜索树中的插入操作、450删除二叉搜索树中的节点
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。:终止条件就是找到遍历的节点为null的时候,就是要插入节点的位置了,并把插入的节点返回。
2025-04-01 15:31:20
1107
原创 代码随想录算法训练营Day16 | Leetcode 530二叉搜索树的最小绝对差、501二叉搜索树中的众数、236二叉树的最近公共祖先
给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(的根节点 root ,返回 树中任意两不同节点值之间的最小差值。进阶:你可以不使用额外的空间吗?(假设由递归产生的隐式调用栈的开销不被计算在内)给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。提示:树中至少有 2 个节点。
2025-03-30 19:16:04
1260
原创 代码随想录算法训练营Day15 | Leetcode 654最大二叉树、617合并二叉树、700二叉搜索树中的搜索、98验证二叉搜索树
给你两棵二叉树: root1 和 root2。想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。返回合并后的二叉树。你需要在 BST 中找到节点值等于 val 的节点。返回以该节点为根的子树。给定一个不重复的整数数组 nums。给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。给定二叉搜索树(BST)的根节点 root 和一个整数值 val。返回 nums 构建的 最大二叉树。
2025-03-28 21:39:23
1291
原创 代码随想录算法训练营Day14 | Leetcode 513找树左下角的值、路径总和、 从中序与(前)后序遍历序列构造二叉树
给你二叉树的根节点 root 和一个表示目标和的整数 targetSum。给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的。给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的。那么 tree1 和 tree2 的前序和后序完全相同,但这是两棵不同的树。tree1 的前序遍历是[1 2 3], 后序遍历是[3 2 1]。tree2 的前序遍历是[1 2 3], 后序遍历是[3 2 1]。,请构造二叉树并返回其根节点。
2025-03-27 22:00:33
1454
原创 代码随想录算法训练营Day13 | Leetcode 110平衡二叉树、257二叉树的所有路径、404左叶子之和、222完全二叉树的节点个数(递归解法)
在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。平时我们解二叉树的题目时,已经习惯了通过节点的左右孩子判断本节点的属性,而本题我们要通过节点的父节点判断本节点的属性。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。给定一个二叉树,判断它是否是高度平衡的二叉树。给出一个完全二叉树,求出该树的节点个数。,返回所有从根节点到叶子节点的路径。说明:叶子节点 是指没有子节点的节点。
2025-03-26 21:07:56
825
原创 代码随想录算法训练营Day12 | Leetcode 226翻转二叉树、101对称二叉树、104二叉树的最大深度、111二叉树的最小深度
要比较的是根节点的两个子树是否是相互翻转的,进而判断这个树是不是对称树,所以要比较的是两个树,参数自然也是左子树节点和右子树节点。返回值自然是 bool 类型。给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。给你一个二叉树的根节点 root , 检查它是否轴对称。给定一个二叉树 root ,返回其最大深度。是指从根节点到最远叶子节点的最长路径上的节点数。是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。给定一个二叉树,找出其最小深度。
2025-03-26 10:02:03
871
原创 代码随想录算法训练营Day11 | 二叉树的递归遍历、迭代遍历、统一迭代法、层序遍历
层序遍历的时候,判断是否遍历到单层的最后面的元素,如果是,就放进 result 数组中,随后返回 result 就可以了。依然采用层序遍历,只不过在单层遍历的时候需要记录一下本层的头部节点,然后在遍历的时候让前一个节点指向本节点。给你二叉树的根节点 root ,返回其节点值的 层序遍历(即逐层地,从左到右访问所有节点)。root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。(即从左到右,逐层遍历)。在二叉树中,一层一层的来遍历二叉树,记录一下遍历的层数就是二叉树的深度。
2025-03-24 20:53:20
1238
原创 代码随想录算法训练营Day10 | Leetcode 150逆波兰表达式求值、239滑动窗口最大值、 347前 K 个高频元素
给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。返回一个表示表达式值的整数。逆波兰表达式是一种后缀表达式,所谓后缀就是指算符写在后面。给你一个字符串数组 tokens ,表示一个根据。
2025-03-23 21:11:45
1420
原创 代码随想录算法训练营Day9 | Leetcode 232用栈实现队列、225用队列实现栈、20有效的括号、1047删除字符串中的所有相邻重复项
是一种遵循先入后出逻辑的线性数据结构,一般使用来实现,底层是动态数组,适合末尾高效操作。
2025-03-22 10:01:03
910
原创 代码随想录算法训练营Day8 | Leetcode 151翻转字符串里的单词、卡码网:55右旋转字符串
字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。例如,对于输入字符串 “abcdefg” 和整数 2,函数应该将其转换为 “fgabcde”。给你一个字符串 s ,请你反转字符串中单词的顺序。整体反转 + 逐词反转。
2025-03-20 21:35:06
220
原创 代码随想录算法训练营Day7 | Leetcode 344反转字符串、541反转字符串II、卡码网:54替换数字
编写一个函数,其作用是将输入的字符串反转过来。不要给另外的数组分配额外的空间,你必须。给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为 number。给定一个字符串 s 和一个整数 k,从字符串开头算起, 每计数至 2k 个字符,就反转这 2k 个字符中的前 k 个字符。例如,对于输入字符串 “a1b2c3”,函数应该将其转换为 “anumberbnumbercnumber”。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。
2025-03-19 13:56:46
941
原创 代码随想录算法训练营Day6 | Leetcode 454四数相加II、383赎金信、15三数之和、18四数之和
Leetcode454四数相加II、383赎金信、15三数之和、18四数之和解题思路与技巧、代码
2025-03-18 17:16:18
687
原创 代码随想录算法训练营Day5 | Leetcode 242有效的字母异位词 、349两个数组的交集、202快乐数、1两数之和
快乐数」 定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。示例 1: 输入: s = “anagram”, t = “nagaram” 输出: true。给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出。如果这个过程 结果为 1,那么这个数就是快乐数。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。编写一个算法来判断一个数 n 是不是快乐数。
2025-03-17 22:19:45
1043
原创 代码随想录算法训练营Day4 | Leetcode 24两两交换链表中的节点 、19删除链表的倒数第N个节点 、 142环形链表II、 面试题 02.07. 链表相交
Leetcode 24两两交换链表中的节点 、19删除链表的倒数第N个节点 、 142环形链表II、 面试题 02.07. 链表相交的思路细节及复杂度分析
2025-03-17 15:02:39
1099
原创 代码随想录算法训练营Day3 | Leetcode 203移除链表元素、707设计链表、206反转链表
void addAtIndex(int index, int val) 将一个值为 val 的节点插入到链表中下标为 index 的节点之前。在插入完成后,新节点会成为链表的第一个节点。给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回。int get(int index) 获取链表中下标为 index 的节点的值。void addAtTail(int val) 将一个值为 val 的节点追加到链表中作为链表的最后一个元素。
2025-03-15 11:09:59
725
原创 代码随想录算法训练营Day2 | Leetcode 209.长度最小的子数组、59.螺旋矩阵II,区间和、开发商购买土地(补充题)
在一个城市区域内,被划分成了n * m个连续的区块,每个区块都拥有不同的权值,代表着其土地价值。目前,有两家开发公司,A 公司和 B 公司,希望购买这个城市区域的土地。为了确保公平竞争,你需要找到一种分配方式,使得 A 公司和 B 公司各自的子区域内的土地总价值之差最小。第一行输入为整数数组 Array 的长度 n,接下来 n 行,每行一个整数,表示数组的元素。随后的输入为需要计算总和的区间,直至文件结束。给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
2025-03-13 20:47:21
1056
原创 代码随想录算法训练营Day1 | Leetcode 704,35,34二分查找、27移除元素、977有序数组的平方
代码随想录算法刷题总结Day1—— Leetcode 704,35,34二分查找、27移除元素、977有序数组的平方
2025-03-12 20:31:33
1286
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人