- 博客(33)
- 收藏
- 关注
原创 二刷代码随想录算法训练营第三十七天 | 738.单调递增的数字、968.监控二叉树
当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。给定一个整数 n ,返回 小于或等于 n 的最大数字,且数字呈 单调递增。给定一个二叉树,我们在树的节点上安装摄像头。节点上的每个摄影头都可以监视。计算监控树的所有节点所需的最小摄像头数量。
2024-04-11 00:50:39
313
原创 二刷代码随想录算法训练营第三十六天 | 435. 无重叠区间、763.划分字母区间、56. 合并区间
以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi]。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi]。给你一个字符串 s。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s。
2024-04-11 00:46:29
501
原创 代码随想录算法训练营第三十五天 |860.柠檬水找零 、406.根据身高重建队列、452. 用最少数量的箭引爆气球
leecode:一、860. 柠檬水找零二、406. 根据身高重建队列二、452. 用最少数量的箭引爆气球
2024-03-27 02:14:23
559
原创 二刷代码随想录算法训练营第三十四天 | 1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果
力扣:1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果时间复杂度: O(n+c)
2024-03-27 01:57:50
294
原创 二刷代码随想录算法训练营第三十二天 | 122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II
目录一、122. 买卖股票的最佳时机 II二、55. 跳跃游戏三、45. 跳跃游戏 II题目链接:力扣文章讲解:代码随想录视频讲解:题目:给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。返回 你能获得的 最大 利润 。代码:时间复杂度: O(n)
2024-03-25 00:34:56
361
原创 二刷代码随想录算法训练营第三十一天 | 455.分发饼干 376. 摆动序列 53. 最大子序和
并且每块饼干 j,都有一个尺寸 s[j]。相反,[1, 4, 7, 2, 5] 和 [1, 7, 4, 5, 5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。相反,[1, 4, 7, 2, 5] 和 [1, 7, 4, 5, 5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。例如, [1, 7, 4, 9, 2, 5] 是一个 摆动序列 ,因为差值 (6, -3, 5, -7, 3) 是正负交替出现的。
2024-03-22 20:52:39
811
原创 二刷代码随想录算法训练营第二十九天 | 491.递增子序列、46.全排列、47.全排列 II
给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素。你可以按 任意顺序 返回答案。数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。给定一个不含重复数字的数组 nums,返回其。给定一个可包含重复数字的序列 nums,返回所有不重复的全排列。
2024-03-21 02:16:16
265
原创 二刷代码随想录算法训练营第二十八天 | 93.复原IP地址、78.子集、90.子集II
给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址可以通过在 s 中插入 '.' 来形成。例如:"0.1.2.201" 和 "192.168.1.1" 是 有效 IP 地址,但是 "0.011.255.245"、"192.168.1.312" 和 "192.168@1.1" 是 无效 IP 地址。有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔。返回该数组所有可能的子集(幂集)。
2024-03-19 21:30:27
258
原创 二刷代码随想录算法训练营第二十七天 | 39. 组合总和、40.组合总和II、131.分割回文串
给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。如果至少一个数字的被选数量不同,则两种组合是不同的。candidates 中的每个数字在每个组合中只能使用 一次。注意:解集不能包含重复的组合。
2024-03-19 21:13:37
487
原创 二刷代码随想录算法训练营第二十五天 | 216.组合总和III 17.电话号码的字母组合
返回 所有可能的有效组合的列表。该列表不能包含相同的组合两次,组合可以以任何顺序返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。的字符串,返回所有它能表示的字母组合。每个数字 最多使用一次。
2024-03-16 20:18:55
423
原创 二刷代码随想录算法训练营第二十三天 | 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树
修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。所以结果应当返回修剪好的二叉搜索树的新的根节点。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。节点的左子树仅包含键 小于 节点键的节点。节点的右子树仅包含键 大于 节点键的节点。
2024-03-14 21:44:18
993
原创 二刷代码随想录算法训练营第二十二天 | 235. 二叉搜索树的最近公共祖先、 701.二叉搜索树中的插入操作、 450.删除二叉搜索树中的节点
给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。返回插入后二叉搜索树的根节点。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。首先找到需要删除的节点;
2024-03-13 21:06:17
315
原创 二刷代码随想录算法训练营第二十一天 | 530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。结点左子树中所含节点的值 小于等于 当前节点的值。结点右子树中所含节点的值 大于等于 当前节点的值。给你一个二叉搜索树的根节点。
2024-03-12 21:27:19
359
原创 二刷代码随想录算法训练营第二十天 |654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树
目录一、654. 最大二叉树二、617. 合并二叉树 三、700. 二叉搜索树中的搜索 四、验证二叉搜索树题目链接:力扣文章讲解:代码随想录视频讲解: 又是构造二叉树,又有很多坑!| LeetCode:654.最大二叉树题目:给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建:创建一个根节点,其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最大值 右边 的 子数组后缀上 构建右子树。返回 nums 构建的 最大二叉树
2024-03-12 01:01:54
764
原创 二刷代码随想录算法训练营第十八天 | 513.找树左下角的值、 112. 路径总和 、 113.路径总和ii、 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树
给你二叉树的根节点 root 和一个表示目标和的整数 targetSum。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum。如果存在,返回 true;否则,返回 false。给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树。叶子节点 是指没有子节点的节点。假设二叉树中至少有一个节点。
2024-03-12 00:44:01
299
原创 二刷代码随想录算法训练营第十七天 |110.平衡二叉树、257. 二叉树的所有路径 、404.左叶子之和
给定一个二叉树,判断它是否是高度平衡的二叉树。的左右两个子树的高度差的绝对值不超过 1。,返回所有从根节点到叶子节点的路径。给你一个二叉树的根节点。是指没有子节点的节点。,返回所有左叶子之和。
2024-03-08 18:20:32
371
原创 二刷代码随想录算法训练营第十六天 | 104.二叉树的最大深度 559.n叉树的最大深度、 111.二叉树的最小深度、 222.完全二叉树的节点个数
使用前序求的就是深度,使用后序求的是高度。深度指的是从root视角向下,高度是叶子节点向上。
2024-03-08 02:35:57
941
原创 二刷代码随想录算法训练营第十五天 |层序遍历 10、 226.翻转二叉树 、101.对称二叉树 2
给你一棵二叉树的根节点 root,翻转这棵二叉树,并返回其根节点。给你一个二叉树的根节点 root, 检查它是否轴对称。(即逐层地,从左到右访问所有节点)。
2024-03-08 01:52:52
359
原创 二刷代码随想录算法训练营第十三天 |239. 滑动窗口最大值、 347.前 K 个高频元素
给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。你可以按 任意顺序 返回答案。返回 滑动窗口中的最大值。,请你返回其中出现频率前。
2024-03-04 22:41:13
358
原创 二刷代码随想录算法训练营第十一天 |20. 有效的括号、 1047. 删除字符串中的所有相邻重复项、 150. 逆波兰表达式求值
栈适合对称匹配类题目。
2024-03-04 22:21:33
320
原创 二刷代码随想录算法训练营第十天 | 232.用栈实现队列、 225. 用队列实现栈
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。请你仅使用两个栈实现先入先出队列。boolean empty() 如果栈是空的,返回 true;void push(int x) 将元素 x 推到队列的末尾。void push(int x) 将元素 x 压入栈顶。int pop() 从队列的开头移除并返回元素。int peek() 返回队列开头的元素。int pop() 移除并返回栈顶元素。int top() 返回栈顶元素。
2024-03-04 22:08:53
374
原创 二刷代码随想录算法训练营第八天 |344.反转字符串、541. 反转字符串II、卡码网:54.替换数字、151.翻转字符串里的单词、卡码网:55.右旋转字符串
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。单词 是由非空格字符组成的字符串。给你一个字符串 s ,请你反转字符串中 单词 的顺序。
2024-02-28 20:56:23
958
原创 二刷代码随想录算法训练营第七天 |454.四数相加II 383. 赎金信 15. 三数之和 18. 四数之和
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!= k ,同时还满足 nums[i] + nums[j] + nums[k] == 0。给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。magazine 中的每个字符只能在 ransomNote 中使用一次。你返回所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。
2024-02-27 23:17:08
462
原创 二刷代码随想录算法训练营第六天 | 242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。但是,数组中同一个元素在答案里不能重复出现。对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。如果这个过程 结果为 1,那么这个数就是快乐数。编写一个算法来判断一个数 n 是不是快乐数。
2024-02-27 01:06:19
897
原创 二刷代码随想录算法训练营第四天 |24. 两两交换链表中的节点、19.删除链表的倒数第N个节点 面试题 、02.07. 链表相交 、142.环形链表II
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。给定一个链表的头节点 head ,返回链表开始入环的第一个节点。给你一个链表,删除链表的倒数第 n个结点,并且返回链表的头结点。注意,函数返回结果后,链表必须 保持其原始结构。
2024-02-25 02:40:27
934
原创 二刷代码随想录算法训练营第三天 | 203.移除链表元素 、 707.设计链表 、206.反转链表
题目链接:力扣文章讲解:代码随想录视频讲解: 手把手带你学会操作链表 | LeetCode:203.移除链表元素_哔哩哔哩_bilibili题目:给你一个链表的头节点 和一个整数 ,请你删除链表中所有满足 的节点,并返回 新的头节点 。代码:不设置虚节点:时间复杂度: O(n) 空间复杂度: O(1)⏲:5:04设置虚节点:时间复杂度: O(n)
2024-02-24 00:45:01
785
原创 二刷代码随想录算法训练营第二天 | 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II
两个方法,操控人与操控墙。1.操控人 (1)方向器 (2)判断位置的合法性。
2024-02-22 22:53:59
348
原创 代码随想录算法训练营第三十九天 | 62.不同路径 63. 不同路径 II
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。
2023-04-24 17:01:58
449
原创 代码随想录算法训练营第三十八天 | 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯
给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。题目:这道题目还可以继续深化,就是一步一个台阶,两个台阶,三个台阶,直到 m个台阶,有多少种方法爬到n阶楼顶。F(n) = F(n - 1) + F(n - 2),其中 n > 1。给定 n ,请计算 F(n)。
2023-04-24 13:01:00
190
原创 博客摘录「 C++11特性——右值引用」2023年4月2日
函数模板在向其他函数传递自身形参时,如果相应实参是左值,它就应该被转发为左值;同样如果相应实参是右值,它就应该被转发为右值。原则3:编译器允许为左值建立引用,不可以为右值建立引用:int &b = num;当返回值为右值引用时,会把返回的临时变量中的内存居为己用,仍保持了有效性,也避免了拷贝(左值引用的用处)。,而移动构造函数和移动赋值函数都需要形参为右值引用类型。原则1:右值可以赋给左值,左值不能给右值(左值权限更大)3)右值引用可以对右值进行修改。1)右值引用必须要进行初始化。原则2:右值无法修改。
2023-04-03 22:35:51
56
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人