![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
代码随想录刷题训练营
文章平均质量分 58
代码随想录十一期笔记
陈大头啊呀
这个作者很懒,什么都没留下…
展开
-
第55天-DP-第十章 单调栈 柱状图中的最大矩形
【代码】第55天-DP-第十章 单调栈 柱状图中的最大矩形。原创 2023-05-17 09:49:05 · 194 阅读 · 0 评论 -
第54天-DP-第十章 单调栈 ● 503.下一个更大元素II(循环链表) ● 42. 接雨水
暴力解法的优化,使用两个数组记录 每个元素左边和右边的最大值。原创 2023-05-16 10:48:12 · 187 阅读 · 0 评论 -
第53天-DP-第十章 单调栈 ● 739. 每日温度 ● 496.下一个更大元素 I
【代码】第53天-DP-第十章 单调栈。原创 2023-05-15 21:28:56 · 142 阅读 · 0 评论 -
第51天-DP-第九章 ● 583. 两个字符串的删除操作 ● 72. 编辑距离 ● 编辑距离总结篇
给定两个单词 word1 和 word2 ,返回使得 word1 和 word2 相同所需的最小步数。解释: 第一步将 “sea” 变为 “ea” ,第二步将 "eat "变为 “ea”输入:word1 = “leetcode”, word2 = “etco”输入: word1 = “sea”, word2 = “eat”每步 可以删除任意一个字符串中的一个字符。原创 2023-05-09 09:36:08 · 46 阅读 · 0 评论 -
第50天-DP-第九章 ● 392.判断子序列 ● 115.不同的子序列
【代码】第50天-DP-第九章 ● 392.判断子序列 ● 115.不同的子序列。原创 2023-05-08 11:31:02 · 48 阅读 · 0 评论 -
第49天-DP-第九章 ● 1143.最长公共子序列 ● 1035.不相交的线 ● 53. 最大子序和 动态规划
【代码】第49天-DP-第九章 ● 1143.最长公共子序列 ● 1035.不相交的线 ● 53. 最大子序和 动态规划。原创 2023-05-08 09:58:41 · 52 阅读 · 0 评论 -
第48天-DP-第九章 ● 300.最长递增子序列 ● 674. 最长连续递增序列 ● 718. 最长重复子数组
【代码】第48天-DP-第九章 ● 300.最长递增子序列 ● 674. 最长连续递增序列 ● 718. 最长重复子数组。原创 2023-05-06 14:25:12 · 51 阅读 · 0 评论 -
第47天-DP-第九章 ● 309.最佳买卖股票时机含冷冻期 ● 714.买卖股票的最佳时机含手续费
【代码】第47天-DP-第九章 ● 309.最佳买卖股票时机含冷冻期 ● 714.买卖股票的最佳时机含手续费。原创 2023-05-06 10:55:02 · 52 阅读 · 0 评论 -
第46天-DP-第九章 ● 123.买卖股票的最佳时机III ● 188.买卖股票的最佳时机IV
由于最多可以买卖两次,因此会有多种状态。原创 2023-05-05 14:22:53 · 44 阅读 · 0 评论 -
第45天-DP-第九章 ● 121. 买卖股票的最佳时机 ● 122.买卖股票的最佳时机II
【代码】第45天-DP-第九章 ● 121. 买卖股票的最佳时机 ● 122.买卖股票的最佳时机II。原创 2023-05-05 10:10:54 · 51 阅读 · 0 评论 -
第44天-DP-第九章 ● 198.打家劫舍 ● 213.打家劫舍II ● 337.打家劫舍III
【代码】第44天-DP-第九章 ● 198.打家劫舍 ● 213.打家劫舍II ● 337.打家劫舍III。原创 2023-05-04 14:53:07 · 52 阅读 · 0 评论 -
第43天-DP-第九章 ● 139.单词拆分 ● 关于多重背包,你该了解这些! ● 背包问题总结篇!
代码随想录链接背包的种类背包的递推公式问背包是否能够装满 或者 最多可以装多少 max(dp[j], dp[j-i] + value[i])装满背包有多少种方法: dp[j] += dp[j-i]背包装满的最大价值: dp[j] = max(dp[j], dp[j-weight[i]]+value[i])装满背包的最小数: dp[j] = min(dp[j-coins[i] +1, dp[j])遍历顺序01背包。原创 2023-04-30 09:59:11 · 587 阅读 · 0 评论 -
第42天-DP-第九章● 70. 爬楼梯 (进阶) ● 322. 零钱兑换 ● 279.完全平方数
完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11。计算并返回可以凑成总金额所需的 最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?给你一个整数 n ,返回 和为 n 的完全平方数的最少数量。你可以认为每种硬币的数量是无限的。原创 2023-04-29 13:27:50 · 679 阅读 · 0 评论 -
第41天-DP-第九章● 完全背包 ● 518. 零钱兑换 II ● 377. 组合总和 Ⅳ
给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target。请你从 nums 中找出并返回总和为 target 的元素组合的个数。完全背包和01背包的区别在于每个物品可以无限去拿。题目数据保证答案符合 32 位整数范围。原创 2023-04-29 12:37:06 · 47 阅读 · 0 评论 -
第40天-DP-第九章 ● 1049. 最后一块石头的重量 II ● 494. 目标和 ● 474.一和零
有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎;如果 x!= y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。最后,最多只会剩下一块 石头。返回此石头 最小的可能重量。如果没有石头剩下,就返回 0。原创 2023-04-29 11:49:39 · 53 阅读 · 0 评论 -
第39天-DP-第九章 ● 二维01背包 ● 一维01背包 ● 416. 分割等和子集
给你一个 只包含正整数 的 非空 数组 nums。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。原创 2023-04-27 11:12:18 · 51 阅读 · 0 评论 -
第38天-DP-第九章 ● 343. 整数拆分 ● 96.不同的二叉搜索树
给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。返回 你可以获得的最大乘积。原创 2023-04-26 11:57:32 · 46 阅读 · 0 评论 -
第37天-DP-第九章 ● 62.不同路径 ● 63. 不同路径 II
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。原创 2023-04-26 10:20:38 · 613 阅读 · 0 评论 -
第36天-DP-第九章 ● 509. 斐波那契数 ● 70. 爬楼梯 ● 746. 使用最小花费爬楼梯
斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1) = 1F(n) = F(n - 1) + F(n - 2),其中 n > 1。给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。每次你可以爬 1 或 2 个台阶。你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。原创 2023-04-21 16:35:33 · 564 阅读 · 0 评论 -
第35天-贪心-第八章 ● 738.单调递增的数字 ● 968.监控二叉树
当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。给定一个整数 n ,返回 小于或等于 n 的最大数字,且数字呈 单调递增。节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。给定一个二叉树,我们在树的节点上安装摄像头。计算监控树的所有节点所需的最小摄像头数量。原创 2023-04-20 09:59:07 · 38 阅读 · 0 评论 -
第34天-贪心-第八章 ● 435. 无重叠区间 ● 763.划分字母区间 ● 56. 合并区间
以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi]。给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi]。输入:intervals = [[1,3],[2,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].输出:[[1,6],[8,10],[15,18]]返回一个表示每个字符串片段的长度的列表。输出:[9,7,8]原创 2023-04-19 10:27:13 · 160 阅读 · 0 评论 -
第33天-贪心-第八章 ● 860.柠檬水找零 ● 406.根据身高重建队列 ● 452. 用最少数量的箭引爆气球
在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被 引爆。可以射出的弓箭的数量 没有限制。墙面上的气球记录在整数数组 points ,其中points[i] = [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。返回的队列应该格式化为数组 queue ,其中 queue[j] = [hj, kj] 是队列中第 j 个人的属性(queue[0] 是排在队列前面的人)。原创 2023-04-18 10:32:51 · 82 阅读 · 0 评论 -
第32天-贪心-第八章 ● 1005.K次取反后最大化的数组和 ● 134. 加油站 ● 135. 分发糖果
选择某个下标 i 并将 nums[i] 替换为 -nums[i]。重复这个过程恰好 k 次。可以多次选择同一个下标 i。以这种方式修改数组后,返回数组 可能的最大和。原创 2023-04-17 10:33:46 · 42 阅读 · 0 评论 -
第31天-贪心-第八章 ● 122.买卖股票的最佳时机II ● 55. 跳跃游戏 ● 45.跳跃游戏II
每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。在每一天,你可以决定是否购买和/或出售股票。你也可以先购买,然后在 同一天 出售。返回到达 nums[n - 1] 的最小跳跃次数。生成的测试用例可以到达 nums[n - 1]。给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。给定一个长度为 n 的 0 索引整数数组 nums。给定一个非负整数数组 nums ,你最初位于数组的 第一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。原创 2023-04-15 10:31:49 · 338 阅读 · 0 评论 -
第30天-贪心-第八章 ● 455.分发饼干 ● 376. 摆动序列 ● 53. 最大子序和
对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j]。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。假设你是一位很棒的家长,想要给你的孩子们一些小饼干。先满足胃口小的小孩 (注意需要循环 饼干, 不能for循环小孩)原创 2023-04-14 11:15:31 · 176 阅读 · 0 评论 -
第29天-回溯-第七章 ● 332.重新安排行程 ● 51. N皇后 ● 37. 解数独
使用 unordered_map 存储出发机场, map作为底层为红黑树,因此存入的数据是有序的,来按序存储到达的机场以及可以到达的次数。在遍历的时候由于到达机场的存储使用的是map有序的,因此第一个符合条件的行程就是最优的行程。原创 2023-04-13 15:18:24 · 53 阅读 · 0 评论 -
第28天-回溯-第七章 * 491.递增子序列 * 46.全排列 * 47.全排列 II
给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素。你可以按 任意顺序 返回答案。给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列。你可以 按任意顺序 返回答案。数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。原创 2023-04-12 10:00:11 · 1093 阅读 · 0 评论 -
第27天-回溯-第七章 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 地址。给你一个整数数组 nums ,数组中的元素 互不相同。给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。原创 2023-04-11 10:33:06 · 287 阅读 · 0 评论 -
第26天-回溯-第七章 ● 39. 组合总和 ● 40.组合总和II ● 131.分割回文串
给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。如果至少一个数字的被选数量不同,则两种组合是不同的。给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串。回文串 是正着读和反着读都一样的字符串。原创 2023-04-10 11:09:26 · 117 阅读 · 0 评论 -
第25天-回溯-第七章 ● 216.组合总和III ● 17.电话号码的字母组合
返回 所有可能的有效组合的列表。该列表不能包含相同的组合两次,组合可以以任何顺序返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。每个数字 最多使用一次。原创 2023-04-08 21:16:08 · 1218 阅读 · 0 评论 -
第24天-回溯-第七章 ● 77. 组合
给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。原创 2023-04-07 09:32:12 · 115 阅读 · 0 评论 -
第23天-代码随想录刷题训练-第六章 ● 669. 修剪二叉搜索树 ● 108.将有序数组转换为二叉搜索树 ● 538.把二叉搜索树转换为累加树
给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。修剪树不应该改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。所以结果应当返回修剪好的二叉搜索树的新的根节点。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。原创 2023-04-06 09:57:57 · 1441 阅读 · 0 评论 -
第21天-代码随想录刷题训练-第六章 ● 530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ● 236. 二叉树的最近公共祖先
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值。结点左子树中所含节点的值 小于等于 当前节点的值。结点右子树中所含节点的值 大于等于 当前节点的值。原创 2023-04-04 11:19:36 · 39 阅读 · 0 评论 -
第22天-代码随想录刷题训练-第六章● 235. 二叉搜索树的最近公共祖先 ● 701.二叉搜索树中的插入操作 ● 450.删除二叉搜索树中的节点
给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。返回插入后二叉搜索树的根节点。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。首先找到需要删除的节点;原创 2023-04-05 12:05:54 · 42 阅读 · 0 评论 -
第20天-代码随想录刷题训练-第六章 ● 654.最大二叉树 ● 617.合并二叉树 ● 700.二叉搜索树中的搜索 ● 98.验证二叉搜索树
想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。1.确定递归函数的参数和返回值,每次传入数组,左右边界点(nums, left, right),返回的是当前递归层确定的一个根节点。前序遍历二叉树:前序遍历二叉树的流程是 中左右,先确定根节点后再确定左右子节点。节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。原创 2023-04-03 11:26:57 · 1667 阅读 · 0 评论 -
第18天-代码随想录刷题训练-第六章● 513.找树左下角的值 ● 112. 路径总和 113.路径总和ii ● 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树
LeetCode链接给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。假设二叉树中至少有一个节点。遍历顺序,因为本题要求的是 最后一层最左边的节点,因此只要遍历顺序 左节点在右节点前就行,因此 任何遍历顺序都可以本题中的中节点 不需要处理逻辑,只需要判断是否到了叶子节点,并且判断当前遍历的叶子节点的深度是否是大于maxDepthpublic :int result;} return;} return;} };原创 2023-04-05 15:49:03 · 1556 阅读 · 0 评论 -
第17天-代码随想录刷题训练-第六章 ● 110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404.左叶子之和
给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。给定二叉树的根节点 root ,返回所有左叶子之和。给定一个二叉树,判断它是否是高度平衡的二叉树。叶子节点 是指没有子节点的节点。原创 2023-04-04 17:29:03 · 91 阅读 · 0 评论 -
第16天-代码随想录刷题训练-第六章 ● 104.二叉树的最大深度 559.n叉树的最大深度 ● 111.二叉树的最小深度 ● 222.完全二叉树的节点个数
N 叉树输入按层序遍历序列化表示,每组子节点由空值分隔(请参见示例)。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。给定一个 N 叉树,找到其最大深度。给定一个二叉树,找出其最大深度。原创 2023-04-03 15:07:22 · 62 阅读 · 0 评论 -
第14天-代码随想录刷题训练-第六章 ● 层序遍历 ● 反转二叉树 ●对称二叉树
【代码】第14天-代码随想录刷题训练-第六章 ● 层序遍历 ● 反转二叉树 ●对称二叉树。原创 2023-04-03 08:46:42 · 1687 阅读 · 0 评论 -
第13天-代码随想录刷题训练-第六章 二叉树和迭代 ● 递归遍历 ● 迭代遍历 ● 统一迭代
确定终止条件: 写完了递归算法, 运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作系统也是用一个栈的结构来保存每一层递归的信息,如果递归没有终止,操作系统的内存栈必然就会溢出。确定递归函数的参数和返回值: 确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。确定单层递归的逻辑: 确定每一层递归需要处理的信息。在这里也就会重复调用自己来实现递归的过程。LeetCode链接。原创 2023-03-28 11:33:19 · 2137 阅读 · 0 评论