自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 代码随想录训练营day56|583、两个字符串的删除操作;72、编辑距离;编辑距离总结篇

2、递推公式:当word1[i - 1] 与 word2[j - 1]相同的时候,dp[i][j] = dp[i - 1][j - 1];当word1[i - 1] 与 word2[j - 1]不相同的时候,dp[i][j] = min({dp[i - 1][j - 1] + 2, dp[i - 1][j] + 1, dp[i][j - 1] + 1});word2[j - 1]的时候我们的操作是dp[i][j] = dp[i - 1][j - 1] 对吧。

2023-04-28 15:44:07 711 1

原创 代码随想录训练营day55|392、判断子序列;115、不同的子序列

2、递推公式:if (s[i - 1] == t[j - 1]) dp[i][j] = dp[i - 1][j - 1] + 1;2、递推公式:dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j];3、初始化:dp[i][0]一定都是1,dp[0][j]一定都是0,dp[0][0]应该是1,空字符串s,可以删除0个元素,变成空字符串t;1、dp数组:dp[i][j]:以i-1为结尾的s子序列中出现以j-1为结尾的t的个数为dp[i][j];

2023-04-25 14:25:58 399

原创 代码随想录训练营day53|1143、最长公共子序列;1035、不相交的线;53、最大子序和动态规划

例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。示例 2: 输入:text1 = "abc", text2 = "abc" 输出:3 解释:最长公共子序列是 "abc",它的长度为 3。示例: 输入: [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。输入:text1 = "abcde", text2 = "ace" 输出:3 解释:最长公共子序列是 "ace",它的长度为 3。

2023-04-22 19:07:19 547

原创 代码随想录训练营day52|300、最长递增子序列;674、最长连续递增序列;718、最长重复子数组

但dp[i][0] 和dp[0][j]要初始值,因为 为了方便递归公式dp[i][j] = dp[i - 1][j - 1] + 1;连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1] ,那么子序列 [nums[l], nums[l + 1], ..., nums[r - 1], nums[r]] 就是连续递增子序列。可以压缩为一维数组,dp[i][j]都是由dp[i - 1][j - 1]推出。

2023-04-21 16:31:49 450

原创 代码随想录训练营day51|309、最佳买卖股票时机含冷冻期;714、买卖股票的最佳时机含手续费;总结

给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格;非负整数 fee 代表了交易股票的手续费用。你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。设计一个算法计算出最大利润。注意:这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格。只是动态规划递推公式里多减去了一个费用而已。返回获得利润的最大值。四种状态比较难分析。

2023-04-20 21:27:21 69

原创 代码随想录训练营day50|123、买卖股票的最佳时机III;188、买卖股票的最佳时机IV

示例 2: 输入:k = 2, prices = [3,2,6,5,0,3] 输出:7 解释:在第 2 天 (股票价格 = 2) 的时候买入,在第 3 天 (股票价格 = 6) 的时候卖出, 这笔交易所能获得利润 = 6-2 = 4。示例 1: 输入:prices = [3,3,5,0,0,3,1,4] 输出:6 解释:在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票价格 = 3)的时候卖出,这笔交易所能获得利润 = 3-0 = 3。示例 4: 输入:prices = [1] 输出:0。

2023-04-19 11:03:17 45

原创 代码随想录训练营day49|121、买卖股票的最佳时机;122、买卖股票的最佳时机II

解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3。解释: 在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4。输入: [7,1,5,3,6,4]输入:[7,1,5,3,6,4]

2023-04-18 18:40:54 351

原创 代码随想录训练营day48|198、打家劫舍;213、打家劫舍II;337、打家劫舍III

你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。示例 2: 输入:nums = [1,2,3,1] 输出:4 解释:你可以先偷窃 1 号房屋(金额 = 1),然后偷窃 3 号房屋(金额 = 3)。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。输入:nums = [2,3,2] 输出:3 解释:你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相邻的。

2023-04-18 18:23:26 337

原创 代码随想录训练营day45|70、爬楼梯(进阶);322、零钱兑换;279、完全平方数

完全平方数 是一个整数,其值等于另一个整数的平方;例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。示例 1: 输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶。示例 2: 输入: 3 输出: 3 解释: 有三种方法可以爬到楼顶。给你一个整数 n ,返回和为 n 的完全平方数的 最少数量。你可以认为每种硬币的数量是无限的。

2023-04-14 11:21:36 121

原创 代码随想录训练营day44|完全背包;518、零钱兑换 II;377、组合总和 Ⅳ

完全背包和01背包问题唯一不同的地方就是,每种物品有无限件。代码模板:518、零钱兑换 II给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。示例 1:解释: 有四种方式可以凑成总金额:示例 2:示例 3:注意,你可以假设:这里的遍历顺序是有要求的。给定一个由正整数组成且不存在重复数字的数组,找出和为给定目标正整数的组合的个数。示例:所有可能的组合为: (1, 1, 1, 1) (1, 1, 2) (1, 2, 1) (1, 3) (2,

2023-04-13 19:25:57 408

原创 代码随想录训练营day43|1049、最后一块石头的重量 II;494、目标和;474、一和零

有一堆石头,每块石头的重量都是正整数。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎;如果 x!= y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。最后,最多只会剩下一块石头。返回此石头最小的可能重量。如果没有石头剩下,就返回 0。输入:[2,7,4,1,8,1]输出:1。

2023-04-12 19:10:05 323

原创 代码随想录训练营day42|01、背包问题理论基础;416、分割等和子集

给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。注意: 每个数组中的元素不会超过 100 数组的大小不会超过 200。01背包的问题还需要再反复理解一下。

2023-04-11 21:32:11 52

原创 代码随想录训练营day41|343、整数拆分;96、不同的二叉搜索树

给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。返回你可以获得的最大乘积。给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种?理解状态转移方程就好。

2023-04-10 11:04:03 32

原创 代码随想录训练营day39|62、不同路径;63、不同路径 II

机器人试图达到网格的右下角(在下图中标记为 “Finish” )。机器人试图达到网格的右下角(在下图中标记为“Finish”)。一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人从(0 , 0) 位置出发,到(m - 1, n - 1)终点。现在考虑网格中有障碍物。解释: 从左上角开始,总共有 3 条路径可以到达右下角。网格中的障碍物和空位置分别用 1 和 0 来表示。

2023-04-08 16:45:35 282

原创 代码随想录训练营day38|509、斐波那契数;70、爬楼梯;746、使用最小花费爬楼梯

也就是: F(0) = 0,F(1) = 1 F(n) = F(n - 1) + F(n - 2),其中 n > 1 给你n ,请计算 F(n)。输入:cost = [1,100,1,1,1,100,1,1,100,1]- 支付 1 ,向上爬两个台阶,到达下标为 2 的台阶。- 支付 1 ,向上爬两个台阶,到达下标为 4 的台阶。- 支付 1 ,向上爬两个台阶,到达下标为 6 的台阶。- 支付 1 ,向上爬一个台阶,到达下标为 7 的台阶。- 支付 1 ,向上爬两个台阶,到达下标为 9 的台阶。

2023-04-08 15:48:23 32

原创 代码随想录训练营day37|738、单调递增的数字;968、监控二叉树

本题只要想清楚个例,例如98,一旦出现strNum[i - 1] > strNum[i]的情况(非单调递增),首先想让strNum[i - 1]减一,strNum[i]赋值9,这样这个整数就是89。给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增。(当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。说明: N 是在 [0, 10^9] 范围内的一个整数。给定一个二叉树,我们在树的节点上安装摄像头。

2023-04-05 16:30:26 39

原创 代码随想录训练营day36|435、无重叠区间;763、划分字母区间;56、合并区间

字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。注意: 可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。如果重叠了,要把pre更新为小的那个,不能简单把pre更新为上一个边界,因为上一个边界是可能被去除的区间。给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。给出一个区间的集合,请合并所有重叠的区间。尝试这样去解决,但无法ac。

2023-04-05 15:16:44 34

原创 代码随想录训练营day35|860、柠檬水找零;406、根据身高重建队列;452、用最少数量的箭引爆气球

在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被引爆。返回的队列应该格式化为数组 queue ,其中 queue[j] = [hj, kj] 是队列中第 j 个人的属性(queue[0] 是排在队列前面的人)。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。给你一个数组 points ,其中 points [i] = [xstart,xend] ,返回引爆所有气球所必须射出的最小弓箭数。

2023-04-04 15:51:09 37

原创 代码随想录训练营day34|1005、K次取反后最大化的数组和;134、加油站;135、分发糖果

那么又是一个贪心:局部最优:只找数值最小的正整数进行反转,当前数值和可以达到最大(例如正整数数组{5, 3, 1},反转1 得到-1比反转5得到的-5大多了),全局最优:整个数组和达到最大。那么如果将负数都转变为正数了,K依然大于0,此时的问题是一个有序正整数序列,如何转变K次正负,让 数组和 达到最大。贪心的思路,局部最优:让绝对值大的负数变为正数,当前数值达到最大,整体最优:整个数组和达到最大。这样从局部最优推出了全局最优,即:相邻的孩子中,评分高的孩子获得更多的糖果。局部最优可以推出全局最优。

2023-04-03 13:08:18 38

原创 代码随想录训练营day32|122、买卖股票的最佳时机II;55、跳跃游戏;45、跳跃游戏II

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:示例 2:示例 3:提示:贪心的思想太妙了,只需要收集所有的正利润就好。给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:示例 2:这道题找覆盖范围最大的cover的思想也好绝

2023-04-01 19:40:49 45

原创 代码随想录训练营day31|455、分发饼干;376、摆动序列;53、最大子序和

对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。例如, [1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3) 是正负交替出现的。相反, [1,4,7,2,5] 和 [1,7,4,5,5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。给定一个整数序列,返回作为摆动序列的最长子序列的长度。只有这两种遍历方式。

2023-03-31 16:17:27 33

原创 代码随想录训练营day29|491、递增子序列;46、全排列;47、全排列 II

491、递增子序列;46、全排列;47、全排列 II

2023-03-29 15:37:41 31

原创 代码随想录训练营day28|93、复原IP地址;78、子集;90、子集II

93、复原IP地址;78、子集;90、子集II

2023-03-28 16:53:11 26

原创 代码随想录训练营day27|39、组合总和;40、组合总和II;131、分割回文串

39、组合总和;40、组合总和II;131、分割回文串

2023-03-27 16:47:13 27

原创 代码随想录训练营day25|216、组合总和III;17、电话号码的字母组合

216、组合总和III;17、电话号码的字母组合

2023-03-25 11:19:31 170

原创 代码随想录训练营day24|77、组合问题

77、组合问题

2023-03-24 14:33:06 79

原创 代码随想录训练营day23|669、修剪二叉搜索树;108、将有序数组转换为二叉搜索树;538、把二叉搜索树转换为累加树

669、修剪二叉搜索树;108、将有序数组转换为二叉搜索树;538、把二叉搜索树转换为累加树

2023-03-23 17:44:50 26

原创 代码随想录训练营day22|235、二叉搜索树的最近公共祖先;701、二叉搜索树中的插入操作;450、删除二叉搜索树中的节点

235、二叉搜索树的最近公共祖先;701、二叉搜索树中的插入操作;450、删除二叉搜索树中的节点

2023-03-22 15:52:46 28

原创 代码随想录训练营day21|530、二叉搜索树的最小绝对差;501、二叉搜索树中的众数;236、二叉树的最近公共祖先

530、二叉搜索树的最小绝对差;501、二叉搜索树中的众数;236、二叉树的最近公共祖先

2023-03-21 18:24:06 54

原创 代码随想录训练营day20|654、最大二叉树;617、合并二叉树;700、二叉搜索树中的搜索;98、验证二叉搜索树

654、最大二叉树;617、合并二叉树;700、二叉搜索树中的搜索;98、验证二叉搜索树

2023-03-20 17:40:37 38

原创 代码随想录训练营day18|513、找树左下角的值;112、路径总和;113、路径总和ii;106、从中序与后序遍历序列构造二叉树;105、从前序与中序遍历序列构造二叉树

513、找树左下角的值;112、路径总和;113、路径总和ii;106、从中序与后序遍历序列构造二叉树;105、从前序与中序遍历序列构造二叉树

2023-03-18 16:51:00 23

原创 代码随想录训练营day17|110、平衡二叉树;257、二叉树的所有路径;404、左叶子之和

110、平衡二叉树;257、二叉树的所有路径;404、左叶子之和

2023-03-17 17:48:44 23

原创 代码随想录训练营day16|104、二叉树的最大深度;559、n叉树的最大深度;111、二叉树的最小深度;222、完全二叉树的节点个数

104、二叉树的最大深度;559、n叉树的最大深度;111、二叉树的最小深度;222、完全二叉树的节点个数

2023-03-16 21:23:34 35

原创 代码随想录训练营day15|102、层序遍历;226、翻转二叉树;101、对称二叉树 2

leetcode 102、层序遍历;226、翻转二叉树;101、对称二叉树 2

2023-03-15 19:12:18 62

原创 代码随想录训练营day14|二叉树的递归遍历;迭代遍历;统一迭代

leetcode 二叉树的递归遍历;迭代遍历;统一迭代

2023-03-15 11:10:48 49

原创 代码随想录训练营day12|239、滑动窗口最大值;347、前 K 个高频元素

leetcode 239、滑动窗口最大值;347、前 K 个高频元素

2023-03-14 18:28:08 25

原创 代码随想录训练营day11|20、有效的括号;1047、删除字符串中的所有相邻重复项;150、逆波兰表达式求值

leetcode|20、有效的括号;1047、删除字符串中的所有相邻重复项;150、逆波兰表达式求值

2023-03-12 19:44:36 26

原创 代码随想录训练营day10|232、用栈实现队列;225、用队列实现栈

leetcode 232、用栈实现队列;225、用队列实现栈

2023-03-10 15:00:51 33

原创 代码随想录训练营day9|28、找出字符串中第一个匹配项的下标;459、重复的子字符串

leetcode 28、找出字符串中第一个匹配项的下标;459、重复的子字符串

2023-03-09 16:54:39 20

原创 代码随想录训练营day8|344、反转字符串;541、反转字符串II;剑指Offer 05、替换空格;151、翻转字符串里的单词;剑指Offer58-II、左旋转字符串

leetcode|344、反转字符串;541、反转字符串II;剑指Offer 05、替换空格;151、翻转字符串里的单词;剑指Offer58-II、左旋转字符串

2023-03-08 11:49:33 41

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除