<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[叽里呱啦大王的博客]]></title><description><![CDATA[非科班数学转码算法小白成长ing]]></description><link>https://blog.youkuaiyun.com/qq_52869843</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_52869843]]></copyright><item><title><![CDATA[代码随想录算法训练营Day42 | Leetcode42. 接雨水、84.柱状图中最大的矩形]]></title><link>https://blog.youkuaiyun.com/qq_52869843/article/details/147703758</link><guid>https://blog.youkuaiyun.com/qq_52869843/article/details/147703758</guid><author>qq_52869843</author><pubDate>Mon, 05 May 2025 08:00:00 +0800</pubDate><description><![CDATA[使用单调栈，也是通过 长 * 宽 来计算雨水面积的，长就是通过柱子的高度来计算，宽是通过柱子之间的下标来计算，栈里只需存放下标就行，想要知道对应的高度，通过 height[stack.top()] 就可以知道弹出的下标对应的高度了。解释：上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图，在这种情况下，可以接 6 个单位的雨水（蓝色部分表示雨水）。输入：height = [0,1,0,2,1,0,1,3,2,1,2,1]输入：heights = [2,1,5,6,2,3]]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营Day41 | Leetcode739. 每日温度、496.下一个更大元素 I、503.下一个更大元素II]]></title><link>https://blog.youkuaiyun.com/qq_52869843/article/details/147702961</link><guid>https://blog.youkuaiyun.com/qq_52869843/article/details/147702961</guid><author>qq_52869843</author><pubDate>Mon, 05 May 2025 08:00:00 +0800</pubDate><description><![CDATA[对于每个 0 <= i < nums1.length ，找出满足 nums1[i] == nums2[j] 的下标 j ，并且在 nums2 确定 nums2[j] 的。给定一个循环数组 nums （ nums[nums.length - 1] 的下一个元素是 nums[0] ），返回 nums 中每个元素的。是按数组遍历顺序，这个数字之后的第一个比它更大的数，这意味着你应该循环地搜索它的下一个更大的数。的数组 nums1 和 nums2 ，下标从 0 开始计数，其中nums1 是 nums2 的子集。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营Day40 | Leetcode 647. 回文子串、516.最长回文子序列]]></title><link>https://blog.youkuaiyun.com/qq_52869843/article/details/147702544</link><guid>https://blog.youkuaiyun.com/qq_52869843/article/details/147702544</guid><author>qq_52869843</author><pubDate>Sun, 04 May 2025 19:46:55 +0800</pubDate><description><![CDATA[从递推公式：dp[i][j] = dp[i + 1][j - 1] + 2 可以看出递推公式是计算到 i 和 j 相同时候的情况，所以需要初始化 dp[i][i]。其他情况 dp[i][j] 初始为 0 ，这样递推公式：dp[i][j] = max(dp[i + 1][j], dp[i][j - 1]) 中 dp[i][j] 才不会被初始值覆盖。：dp[i][j] 表示字符串 s 在 [i, j] 范围内最长的回文子序列的长度为 dp[i][j]。是字符串中的由连续字符组成的一个序列。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营Day39 | Leetcode 115.不同的子序列、583.两个字符串的删除操作、72.编辑距离]]></title><link>https://blog.youkuaiyun.com/qq_52869843/article/details/147518824</link><guid>https://blog.youkuaiyun.com/qq_52869843/article/details/147518824</guid><author>qq_52869843</author><pubDate>Sun, 04 May 2025 18:54:11 +0800</pubDate><description><![CDATA[dp[i][0] 表示 word2 为空字符串，以 i-1 为结尾的字符串 word1 要删除多少个元素才能和 word2 相同，易知 dp[i][0] = i，dp[0][j] 同理。当 s[i - 1] 与 t[j - 1] 不相等时，dp[i][j] 只由一部分组成，不用 s[i - 1] 来匹配（相当于在 s 中删除这个元素），即：dp[i - 1][j]。：dp[i][0] 表示以下标 i-1 为结尾的字符串 word1 和空字符串 word2 的最近编辑距离为 dp[i][0]。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营Day38 | Leetcode1143.最长公共子序列、1035.不相交的线、53.最大子序和、392.判断子序列]]></title><link>https://blog.youkuaiyun.com/qq_52869843/article/details/147492576</link><guid>https://blog.youkuaiyun.com/qq_52869843/article/details/147492576</guid><author>qq_52869843</author><pubDate>Fri, 25 Apr 2025 17:03:00 +0800</pubDate><description><![CDATA[字符串的一个子序列是原始字符串删除一些（也可以不删除）字符而不改变剩余字符相对位置形成的新字符串。（例如，"ace"是"abcde"的一个子序列，而"aec"不是）。是指这样一个新的字符串：它是由原字符串在不改变字符的相对顺序的情况下删除某些字符（也可以不删除任何字符）后组成的新字符串。给你一个整数数组 nums ，请你找出一个具有最大和的连续子数组（子数组最少包含一个元素），返回其最大和。在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。是这两个字符串所共同拥有的子序列。]]></description><category></category></item><item><title><![CDATA[# 代码随想录算法训练营Day37 | Leetcode300.最长递增子序列、674.最长连续递增序列、718.最长重复子数组]]></title><link>https://blog.youkuaiyun.com/qq_52869843/article/details/147473853</link><guid>https://blog.youkuaiyun.com/qq_52869843/article/details/147473853</guid><author>qq_52869843</author><pubDate>Thu, 24 Apr 2025 21:18:18 +0800</pubDate><description><![CDATA[可以由两个下标 l 和 r（l < r）确定，如果对于每个 l <= i < r，都有 nums[i] < nums[i + 1] ，那么子序列 [nums[l], nums[l + 1], …, nums[r - 1], nums[r]] 就是连续递增子序列。是由数组派生而来的序列，删除（或不删除）数组中的元素而不改变其余元素的顺序。例如，[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。给你一个整数数组 nums ，找到其中最长严格递增子序列的长度。、长度最长的子数组的长度。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营Day36 | Leetcode188.买卖股票的最佳时机IV、309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费]]></title><link>https://blog.youkuaiyun.com/qq_52869843/article/details/147427923</link><guid>https://blog.youkuaiyun.com/qq_52869843/article/details/147427923</guid><author>qq_52869843</author><pubDate>Tue, 22 Apr 2025 21:42:09 +0800</pubDate><description><![CDATA[给你一个整数数组 prices 和一个整数 k ，其中 prices[i] 是某支给定的股票在第 i 天的价格。你最多可以完成 k 笔交易。唯一差别在于递推公式部分，dp 数组的含义为dp[i][0] 表示第 i 天持有股票所得最多现金， dp[i][1] 表示第 i 天不持有股票所得最多现金。dp[i][1] 表示的是第 i 天，买入股票的状态，但并不是说一定要第 i 天买入股票。同理可以推出 dp[0][j] 当 j 为奇数的时候都初始化为 -prices[0]， 当 j 为偶数的时候都初始化为 0。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营Day35 | Leetcode121. 买卖股票的最佳时机、122.买卖股票的最佳时机II、123.买卖股票的最佳时机III]]></title><link>https://blog.youkuaiyun.com/qq_52869843/article/details/147402202</link><guid>https://blog.youkuaiyun.com/qq_52869843/article/details/147402202</guid><author>qq_52869843</author><pubDate>Mon, 21 Apr 2025 21:31:25 +0800</pubDate><description><![CDATA[由递推公式可以看出其基础都是要从 dp[0][0] 和 dp[0][1] 推导出来，那么 dp[0][0] 表示第 0 天持有股票，此时的持有股票就一定是买入股票了，因为不可能有前一天推出来，所以 dp[0][0] -= prices[0]；dp[0][1]表示第 0 天不持有股票，不持有股票那么现金就是 0，所以 dp[0][1] = 0。那么 dp[i][1] 一定是选最大的，所以 dp[i][1] = max(dp[i-1][0] - prices[i], dp[i - 1][1])。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营Day34 | Leetcode198.打家劫舍、213.打家劫舍II、337.打家劫舍III]]></title><link>https://blog.youkuaiyun.com/qq_52869843/article/details/147401436</link><guid>https://blog.youkuaiyun.com/qq_52869843/article/details/147401436</guid><author>qq_52869843</author><pubDate>Mon, 21 Apr 2025 20:45:55 +0800</pubDate><description><![CDATA[你是一个专业的小偷，计划偷窃沿街的房屋。每间房内都藏有一定的现金，影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统，如果两间相邻的房屋在同一晚上被小偷闯入，系统会自动报警。同时，相邻的房屋装有相互连通的防盗系统，如果两间相邻的房屋在同一晚上被小偷闯入，系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组，计算你 不触动警报装置的情况下 ，一夜之内能够偷窃到的最高金额。给定一个代表每个房屋存放金额的非负整数数组，计算你 在不触动警报装置的情况下 ，今晚能够偷窃到的最高金额。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营Day33 | Leetcode322. 零钱兑换、279.完全平方数、139.单词拆分 、多重背包（卡码网56. 携带矿石资源）]]></title><link>https://blog.youkuaiyun.com/qq_52869843/article/details/147325860</link><guid>https://blog.youkuaiyun.com/qq_52869843/article/details/147325860</guid><author>qq_52869843</author><pubDate>Fri, 18 Apr 2025 14:13:12 +0800</pubDate><description><![CDATA[在这个行星上，有许多不同类型的矿石资源，每种矿石都有不同的重要性和价值。你需要选择哪些矿石带回地球，但你的宇航舱有一定的容量限制。现在有 N 种不同类型的矿石，每种矿石有一个重量 w[i]，一个价值 v[i]，以及最多 k[i] 个可用。输入共包括四行，第一行包含两个整数 C 和 N，分别表示宇航舱的容量和矿石的种类数量。注意：不要求字典中出现的单词全部都使用，并且字典中的单词可以重复使用。给你一个整数 n ，返回 和为 n 的完全平方数的最少数量。第二行包含 N 个整数，表示 N 种矿石的重量。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营Day32 | 完全背包问题（卡码网52. 携带研究材料）、Leetcode518. 零钱兑换 II、377. 组合总和 Ⅳ、卡码网70. 爬楼梯]]></title><link>https://blog.youkuaiyun.com/qq_52869843/article/details/147297323</link><guid>https://blog.youkuaiyun.com/qq_52869843/article/details/147297323</guid><author>qq_52869843</author><pubDate>Thu, 17 Apr 2025 15:35:26 +0800</pubDate><description><![CDATA[在 01背包问题中，背包先空留出物品 1 的容量，此时容量为 1，只考虑放物品 0 的最大价值是 dp[0][1]，因为 01 背包每个物品只有一个，既然空出物品 1，那背包中也不会再有物品 1。放物品 i：背包空出物品 i 的容量后，背包容量为 j - weight[i]，dp[i][j - weight[i]] 为背包容量为 j - weight[i] 且不放物品 i 的最大价值，那么 dp[i][j - weight[i]] + value[i] ，就是背包放物品 i 得到的最大价值。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营Day31 | Leetcode1049. 最后一块石头的重量 II、494. 目标和、474.一和零]]></title><link>https://blog.youkuaiyun.com/qq_52869843/article/details/147286351</link><guid>https://blog.youkuaiyun.com/qq_52869843/article/details/147286351</guid><author>qq_52869843</author><pubDate>Wed, 16 Apr 2025 21:49:21 +0800</pubDate><description><![CDATA[有一堆石头，用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。每一回合，从中选出任意两块石头，然后将它们一起粉碎。假设石头的重量分别为 x 和 y，且 x <= y。如果 x == y，那么两块石头都会被完全粉碎；如果 x!= y，那么重量为 x 的石头将会完全粉碎，而重量为 y 的石头新重量为 y-x。最后，最多只会剩下一块石头。返回此石头最小的可能重量。如果没有石头剩下，就返回 0。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营Day30 | 01背包问题（卡码网46. 携带研究材料）、Leetcode416.分割等和子集]]></title><link>https://blog.youkuaiyun.com/qq_52869843/article/details/147247360</link><guid>https://blog.youkuaiyun.com/qq_52869843/article/details/147247360</guid><author>qq_52869843</author><pubDate>Tue, 15 Apr 2025 14:33:46 +0800</pubDate><description><![CDATA[确定 dp 数组以及下标的含义：需要两个维度 i ，j 分别表示物品和背包容量。dp[i][j] 表示从下标为 [0-i] 的物品里任意取，放进容量为 j 的背包，价值总和最大是多少。

把物品 0 与物品 1 放入背包的情况：
确定递推公式：以 dp[1][4] 的状态为例，求取 dp[1][4] 有两种情况：dp 数组如何初始化：首先，从 dp[i][j] 的定义出发，如果背包容量 j 为0的话，即 dp[i][0]，无论是选取哪些物品，背包价值总和一定为 0。其次， dp[0][j] 即：存放编号 0]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营Day29 | Leetcode 62.不同路径、63. 不同路径 II、343.整数拆分、96.不同的二叉搜索树]]></title><link>https://blog.youkuaiyun.com/qq_52869843/article/details/147225765</link><guid>https://blog.youkuaiyun.com/qq_52869843/article/details/147225765</guid><author>qq_52869843</author><pubDate>Mon, 14 Apr 2025 17:07:06 +0800</pubDate><description><![CDATA[则从1遍历 j，比较 (i - j) * j 和 dp[i - j] * j 取最大的。递推公式为 dp[i] = max(dp[i], max((i - j) * j, dp[i - j] * j))，也可以理解为 j * (i - j) 是单纯的把整数拆分为两个数相乘，而 j * dp[i - j] 是拆分成两个以及两个以上的个数相乘。一个机器人位于一个 m x n 网格的左上角 （起始点在下图中标记为 “Start” ）。（即 grid[m - 1][n - 1]）。（即 grid[0][0]）。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营Day28 | Leetcode 509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯]]></title><link>https://blog.youkuaiyun.com/qq_52869843/article/details/147165145</link><guid>https://blog.youkuaiyun.com/qq_52869843/article/details/147165145</guid><author>qq_52869843</author><pubDate>Sat, 12 Apr 2025 15:39:35 +0800</pubDate><description><![CDATA[由递归公式，只初始化 dp[0] 和 dp[1] 就够了，其他的最终都是 dp[0] 与 dp[1] 推出。不考虑 dp[0] 如何初始化，只初始化 dp[1] = 1，dp[2] = 2，然后从 i = 3 开始递推，这样才符合 dp[i] 的定义。为了所费体力最小，选择从 dp[i - 1] 和 dp[i - 2] 跳至 dp[i] 耗费少的，即 dp[i] = min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2])。需要 n 阶你才能到达楼顶。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营Day27 | Leetcode 56. 合并区间、738.单调递增的数字、968.监控二叉树]]></title><link>https://blog.youkuaiyun.com/qq_52869843/article/details/147147858</link><guid>https://blog.youkuaiyun.com/qq_52869843/article/details/147147858</guid><author>qq_52869843</author><pubDate>Fri, 11 Apr 2025 17:00:11 +0800</pubDate><description><![CDATA[以数组 intervals 表示若干个区间的集合，其中单个区间为 intervals[i] = [starti, endi]。请你合并所有重叠的区间，并返回 一个不重叠的区间数组，该数组需恰好覆盖输入中的所有区间。当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时，我们称这个整数是。给定一个整数 n ，返回 小于或等于 n 的最大数字，且数字呈。说明: N 是在 [0, 10^9] 范围内的一个整数。给定一个二叉树，我们在树的节点上安装摄像头。计算监控树的所有节点所需的最小摄像头数量。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营Day26 | Leetcode 452. 用最少数量的箭引爆气球、435. 无重叠区间、763.划分字母区间]]></title><link>https://blog.youkuaiyun.com/qq_52869843/article/details/147121249</link><guid>https://blog.youkuaiyun.com/qq_52869843/article/details/147121249</guid><author>qq_52869843</author><pubDate>Thu, 10 Apr 2025 16:46:21 +0800</pubDate><description><![CDATA[例如，字符串 “ababcc” 能够被分为 [“abab”, “cc”]，但类似 [“aba”, “bcc”] 或 [“ab”, “ab”, “cc”] 的划分是非法的。非常像，弓箭的数量就相当于是非交叉区间的数量，只要把弓箭那道题目代码里射爆气球的判断条件加个等号（认为 [0，1] [1，2] 不是相邻区间），然后用总区间数减去弓箭数量就是要移除的区间数量了。注意，划分结果需要满足：将所有划分结果按顺序连接，得到的字符串仍然是 s。例如 [1, 2] 和 [2, 3] 是不重叠的。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营Day25 | Leetcode 134. 加油站、135. 分发糖果、860.柠檬水找零、406.根据身高重建队列]]></title><link>https://blog.youkuaiyun.com/qq_52869843/article/details/147102217</link><guid>https://blog.youkuaiyun.com/qq_52869843/article/details/147102217</guid><author>qq_52869843</author><pubDate>Thu, 10 Apr 2025 08:00:00 +0800</pubDate><description><![CDATA[返回的队列应该格式化为数组 queue ，其中 queue[j] = [hj, kj] 是队列中第 j 个人的属性（queue[0] 是排在队列前面的人）。注意，一开始你手头没有任何零钱。给你一个整数数组 bills ，其中 bills[i] 是第 i 位顾客付的账。给定两个整数数组 gas 和 cost ，如果你可以按顺序绕环路行驶一周，则返回出发时加油站的编号，否则返回 -1。账单是20，优先消耗一个10和一个5：因为美元10只能给账单20找零，而美元5可以给账单10和账单20找零，美元5更万能！]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营Day24 | Leetcode 122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II、1005.K次取反后最大化的数组和]]></title><link>https://blog.youkuaiyun.com/qq_52869843/article/details/147097547</link><guid>https://blog.youkuaiyun.com/qq_52869843/article/details/147097547</guid><author>qq_52869843</author><pubDate>Wed, 09 Apr 2025 20:36:47 +0800</pubDate><description><![CDATA[每个元素 nums[i] 表示从索引 i 向后跳转的最大长度。给你一个整数数组 prices ，其中 prices[i] 表示某支股票第 i 天的价格。判断你是否能够到达最后一个下标，如果可以，返回 true；给定一个长度为 n 的 0 索引整数数组 nums。在每一天，你可以决定是否购买和/或出售股票。数组中的每个元素代表你在该位置可以跳跃的最大长度。给你一个非负整数数组 nums ，你最初位于数组的。生成的测试用例可以到达 nums[n - 1]。说明: 假设你总是可以到达数组的最后一个位置。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营Day23 | Leetcode 455分发饼干、376摆动序列、53最大子序和]]></title><link>https://blog.youkuaiyun.com/qq_52869843/article/details/147022954</link><guid>https://blog.youkuaiyun.com/qq_52869843/article/details/147022954</guid><author>qq_52869843</author><pubDate>Wed, 09 Apr 2025 19:47:20 +0800</pubDate><description><![CDATA[对每个孩子 i，都有一个胃口值 g[i]，这是能让孩子们满足胃口的饼干的最小尺寸；并且每块饼干 j，都有一个尺寸 s[j]。如果 s[j] >= g[i]，我们可以将这个饼干 j 分配给孩子 i ，这个孩子会得到满足。你的目标是满足尽可能多的孩子，并输出这个最大数值。给你一个整数数组 nums ，请你找出一个具有最大和的连续子数组（子数组最少包含一个元素），返回其最大和。假设你是一位很棒的家长，想要给你的孩子们一些小饼干。可以通过从原始序列中删除一些（也可以不删除）元素来获得，剩下的元素保持其原始顺序。]]></description><category></category></item></channel></rss>