<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[loveJava17的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/loveJava17</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; loveJava17]]></copyright><item><title><![CDATA[【HOT100-二分查找】153. 寻找旋转排序数组中的最小值]]></title><link>https://blog.youkuaiyun.com/loveJava17/article/details/157549298</link><guid>https://blog.youkuaiyun.com/loveJava17/article/details/157549298</guid><author>loveJava17</author><pubDate>Fri, 30 Jan 2026 16:29:02 +0800</pubDate><description><![CDATA[已知一个长度为n的数组，预先按照升序排列，经由1到n次后，得到输入数组。例如，原数组47注意，数组的结果为数组。给你一个元素值的数组nums，它原来是一个升序排列的数组，并按上述情形进行了多次旋转。请你找出并返回数组中的。你必须设计一个时间复杂度为O(log n)的算法解决此问题。1原数组为 [1,2,3,4,5] ，旋转 3 次得到输入数组。0原数组为 [0,1,2,4,5,6,7] ，旋转 4 次得到输入数组。11原数组为 [11,13,15,17] ，旋转 4 次得到输入数组。]]></description><category></category></item><item><title><![CDATA[【HOT100-二分查找】33. 搜索旋转排序数组]]></title><link>https://blog.youkuaiyun.com/loveJava17/article/details/157469688</link><guid>https://blog.youkuaiyun.com/loveJava17/article/details/157469688</guid><author>loveJava17</author><pubDate>Wed, 28 Jan 2026 14:56:02 +0800</pubDate><description><![CDATA[整数数组nums按升序排列，数组中的值。在传递给函数之前，nums在预先未知的某个下标k）上进行了，使数组变为（下标计数）。例如，下标3上向左旋转后可能变为。给你的数组nums和一个整数target，如果nums中存在这个目标值target，则返回它的下标，否则返回-1。你必须设计一个时间复杂度为O(log n)的算法解决此问题。4-1-1nums。]]></description><category></category></item><item><title><![CDATA[【HOT100-二分查找】34. 在排序数组中查找元素的第一个和最后一个位置]]></title><link>https://blog.youkuaiyun.com/loveJava17/article/details/157430359</link><guid>https://blog.youkuaiyun.com/loveJava17/article/details/157430359</guid><author>loveJava17</author><pubDate>Tue, 27 Jan 2026 13:55:55 +0800</pubDate><description><![CDATA[给你一个按照非递减顺序排列的整数数组nums，和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值target，返回[-1, -1]。你必须设计并实现时间复杂度为O(log n)的算法解决此问题。]]></description><category></category></item><item><title><![CDATA[Hot 100 | 240. 搜索二维矩阵 II、160.相交链表、206.反转链表]]></title><link>https://blog.youkuaiyun.com/loveJava17/article/details/148654188</link><guid>https://blog.youkuaiyun.com/loveJava17/article/details/148654188</guid><author>loveJava17</author><pubDate>Tue, 17 Jun 2025 00:02:46 +0800</pubDate><description><![CDATA[本题采用二分查找的方法。（1）对矩阵的每一行进行二分查找，首先定义出左边界和右边界的变量，然后计算出中间元素的下标索引，将中间元素与target元素值进行比对。（2）如果中间元素比target大，那么需要在中间元素的左边区间进行二次二分查找，也就是将右边界的下标更改为mid-1；如果中间元素比target小，那么需要在中间元素的右边区间进行二次二分查找，也就是将左边界的下标更改为mid+1；如果中间元素等于target，查找到了目标值，返回true。]]></description><category></category></item><item><title><![CDATA[HOT 100 | 73.矩阵置零、54.螺旋矩阵、48.旋转图像]]></title><link>https://blog.youkuaiyun.com/loveJava17/article/details/148497714</link><guid>https://blog.youkuaiyun.com/loveJava17/article/details/148497714</guid><author>loveJava17</author><pubDate>Fri, 13 Jun 2025 22:59:49 +0800</pubDate><description><![CDATA[（1）使用逐层旋转的方法，由于是n*n的矩阵，所以只需要定义left和right的初始值即可: left, right = 0, len(matrix)。（3）逐层进行旋转，也就是先逐次旋转四个顶点，也就是进行值的交换，然后旋转偏移量为i的元素。1. 使用两个数组分别标记每行每列是否有0，初始化全为False，遇到0就变成True。（2）定义一个单独的变量topleft，用于存储左上角的数值，方便后面进行交换。3. 再次遍历矩阵，更新原数组，将0的行列置为0。（3）定义四个变量，分别是矩阵的四个边界。]]></description><category></category></item><item><title><![CDATA[HOT 100 | 189.轮转数组、238. 除自身以外数组的乘积、41. 缺失的第一个正数]]></title><link>https://blog.youkuaiyun.com/loveJava17/article/details/148190272</link><guid>https://blog.youkuaiyun.com/loveJava17/article/details/148190272</guid><author>loveJava17</author><pubDate>Sun, 25 May 2025 19:50:25 +0800</pubDate><description><![CDATA[2. 可以先计算出从 nums[0] 到 nums[i−2] 的乘积 pre[i−1]，再乘上 nums[i−1]，就得到了 pre[i]，即：pre[i]=pre[i−1]⋅nums[i−1]；初始值：pre[0]=suf[n−1]=1。按照定义，pre[0] 和 suf[n−1] 都是空子数组的元素乘积，我们规定这是 1，因为 1 乘以任何数 x 都等于 x，这样可以方便递推计算 pre[1]，suf[n−2] 等。定义 suf[i] 表示从 nums[i+1] 到 nums[n−1] 的乘积。]]></description><category></category></item><item><title><![CDATA[HOT 100 | 【子串】76.最小覆盖子串、【普通数组】53.最大子数组和、【普通数组】56.合并区间]]></title><link>https://blog.youkuaiyun.com/loveJava17/article/details/147837266</link><guid>https://blog.youkuaiyun.com/loveJava17/article/details/147837266</guid><author>loveJava17</author><pubDate>Fri, 09 May 2025 23:55:58 +0800</pubDate><description><![CDATA[本文介绍了三个算法问题的解题思路和代码实现。首先，针对“最小覆盖子串”问题，通过滑动窗口和哈希表技术，有效降低了时间复杂度，实现了在字符串s中找到包含字符串t所有字符的最短子串。其次，对于“最大子数组和”问题，采用动态规划方法，通过定义状态转移方程和初始化条件，求解了数组中连续子数组的最大和。最后，关于“合并区间”问题，利用贪心算法，通过排序和判断区间重叠，实现了区间的合并。每个问题都提供了详细的解题步骤和Python代码实现，展示了如何高效解决这些常见的算法问题。]]></description><category></category></item><item><title><![CDATA[代码随想录 Day 45 | 【第九章 动态规划part 08】121. 买卖股票的最佳时机、122.买卖股票的最佳时机II、123.买卖股票的最佳时机III]]></title><link>https://blog.youkuaiyun.com/loveJava17/article/details/146353967</link><guid>https://blog.youkuaiyun.com/loveJava17/article/details/146353967</guid><author>loveJava17</author><pubDate>Wed, 19 Mar 2025 00:16:54 +0800</pubDate><description><![CDATA[121. 买卖股票的最佳时机。]]></description><category></category></item><item><title><![CDATA[代码随想录 Day 44 | 【第九章 动态规划part 07】198.打家劫舍、213.打家劫舍II、337.打家劫舍III]]></title><link>https://blog.youkuaiyun.com/loveJava17/article/details/146295734</link><guid>https://blog.youkuaiyun.com/loveJava17/article/details/146295734</guid><author>loveJava17</author><pubDate>Sun, 16 Mar 2025 18:15:13 +0800</pubDate><description><![CDATA[198.打家劫舍。]]></description><category></category></item><item><title><![CDATA[代码随想录 Day 43 | 【第九章 动态规划part 06】322. 零钱兑换、279.完全平方数、139.单词拆分、]]></title><link>https://blog.youkuaiyun.com/loveJava17/article/details/146277636</link><guid>https://blog.youkuaiyun.com/loveJava17/article/details/146277636</guid><author>loveJava17</author><pubDate>Sat, 15 Mar 2025 18:19:24 +0800</pubDate><description><![CDATA[关于多重背包，你该了解这些！代码随想录背包问题总结篇！代码随想录。]]></description><category></category></item><item><title><![CDATA[代码随想录 Day 42 | 【第九章 动态规划 part 05】完全背包、518. 零钱兑换 II、377. 组合总和 Ⅳ、70. 爬楼梯 （进阶）]]></title><link>https://blog.youkuaiyun.com/loveJava17/article/details/146243555</link><guid>https://blog.youkuaiyun.com/loveJava17/article/details/146243555</guid><author>loveJava17</author><pubDate>Thu, 13 Mar 2025 23:52:16 +0800</pubDate><description><![CDATA[完全背包。]]></description><category></category></item><item><title><![CDATA[代码随想录 Day 41 | 【第九章 动态规划 part 04】1049. 最后一块石头的重量 II、494. 目标和、474.一和零]]></title><link>https://blog.youkuaiyun.com/loveJava17/article/details/146001292</link><guid>https://blog.youkuaiyun.com/loveJava17/article/details/146001292</guid><author>loveJava17</author><pubDate>Wed, 05 Mar 2025 22:40:12 +0800</pubDate><description><![CDATA[（1）定义dp数组及初始化：初始化一个二维动态规划数组 dp，大小为 (m+1) x (n+1)，dp[i][j] 表示在至多有 i 个 '0' 和 j 个 '1' 的条件下，可以选择的最大字符串数量；（2）递推公式：本题中石头的重量就是石头的价值，递推公式为dp[j] = max(dp[j], dp[j-stones[i]]+stones[i])（4）dp数组递推公式：dp[i][j] = max(dp[i][j], dp[i-zero][j-one] + 1)]]></description><category></category></item><item><title><![CDATA[代码随想录 Day 39 | 【第九章 动态规划 part 03】01背包问题 二维、01背包问题 一维、416. 分割等和子集]]></title><link>https://blog.youkuaiyun.com/loveJava17/article/details/145955571</link><guid>https://blog.youkuaiyun.com/loveJava17/article/details/145955571</guid><author>loveJava17</author><pubDate>Sun, 02 Mar 2025 12:52:55 +0800</pubDate><description><![CDATA[例如初始化最左边，它的含义是背包容量为0，放物品0、1、2、...、j的最大价值是多少，显然最大价值为0，初始化为0，因为背包容量为0。初始化最上方，它的含义是背包容量为0、1、2、...、i分别放物品0的最大价值是多少，物品0的容量为多少，前面的值为0（因为放不下），而后面的值全部初始化为物品0的价值。（2）递推公式：dp[ i ][ j ]取决于是否放当前的物品 i ，如果不放物品 i ，那么当前状态的最大价值为dp[i-1][j]；如果放物品[i]，那么减去i的重量，加上i的价值。]]></description><category></category></item><item><title><![CDATA[代码随想录 Day 38 | 【第九章 动态规划part 02】62.不同路径、63. 不同路径 II、343.整数拆分、96.不同的二叉搜索树]]></title><link>https://blog.youkuaiyun.com/loveJava17/article/details/145951865</link><guid>https://blog.youkuaiyun.com/loveJava17/article/details/145951865</guid><author>loveJava17</author><pubDate>Sat, 01 Mar 2025 20:00:33 +0800</pubDate><description><![CDATA[本题大家掌握动态规划的方法就可以。数论方法 有点非主流，很难想到。]]></description><category></category></item><item><title><![CDATA[代码随想录 Day 37 | 【第九章 动态规划part 01】理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯]]></title><link>https://blog.youkuaiyun.com/loveJava17/article/details/145864605</link><guid>https://blog.youkuaiyun.com/loveJava17/article/details/145864605</guid><author>loveJava17</author><pubDate>Fri, 28 Feb 2025 00:30:29 +0800</pubDate><description><![CDATA[理论基础无论大家之前对动态规划学到什么程度，一定要先看 我讲的 动态规划理论基础。如果没做过动态规划的题目，看我讲的理论基础，会有感觉 是不是简单题想复杂了？其实并没有，我讲的理论基础内容，在动规章节所有题目都有运用，所以很重要！如果做过动态规划题目的录友，看我的理论基础 就会感同身受了。]]></description><category></category></item><item><title><![CDATA[代码随想录 Day 36 | 【第八章 贪心算法 part 05】56. 合并区间、738.单调递增的数字、968.监控二叉树 （可跳过）、贪心算法总结]]></title><link>https://blog.youkuaiyun.com/loveJava17/article/details/145809021</link><guid>https://blog.youkuaiyun.com/loveJava17/article/details/145809021</guid><author>loveJava17</author><pubDate>Sun, 23 Feb 2025 15:37:39 +0800</pubDate><description><![CDATA[（1）首先对区间按照左边界进行排序，方便对重叠区间进行处理。（2）对重叠的判断：当前区间的左边界小于等于上一个区间的右边界，说明两个区间存在重叠；从而对重叠区间进行合并操作。如果两个区间不重叠，就重新定义一个result数组将区间放入即可。（1）定义一个二维数组用于记录我们最后的结果。（2）如果输入的区间是空，那么直接返回我们的空result结果。（3）对输入的区间按照左边界进行排序。将第0个区间先放进结果集，因为至少有一个区间是一定存在的。如果后面的区间有重叠的话，那么直接让区间进行合并，直接在resul]]></description><category></category></item><item><title><![CDATA[代码随想录 Day 35 | 【第八章 贪心算法 part 04】452. 用最少数量的箭引爆气球、435. 无重叠区间、763.划分字母区间]]></title><link>https://blog.youkuaiyun.com/loveJava17/article/details/145787948</link><guid>https://blog.youkuaiyun.com/loveJava17/article/details/145787948</guid><author>loveJava17</author><pubDate>Sun, 23 Feb 2025 13:35:01 +0800</pubDate><description><![CDATA[452. 用最少数量的箭引爆气球。]]></description><category></category></item><item><title><![CDATA[代码随想录 Day 34 | 【第八章 贪心算法 part 03】134. 加油站、135. 分发糖果、860.柠檬水找零、406.根据身高重建队列]]></title><link>https://blog.youkuaiyun.com/loveJava17/article/details/145741326</link><guid>https://blog.youkuaiyun.com/loveJava17/article/details/145741326</guid><author>loveJava17</author><pubDate>Thu, 20 Feb 2025 01:38:21 +0800</pubDate><description><![CDATA[本题有点难度，不太好想，推荐大家熟悉一下方法二。]]></description><category></category></item><item><title><![CDATA[代码随想录 Day 33 | 【第八章 贪心算法 part 02】122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II、1005.K次取反后最大化的数组和]]></title><link>https://blog.youkuaiyun.com/loveJava17/article/details/145655844</link><guid>https://blog.youkuaiyun.com/loveJava17/article/details/145655844</guid><author>loveJava17</author><pubDate>Sun, 16 Feb 2025 23:22:05 +0800</pubDate><description><![CDATA[本题解法很巧妙，本题大家可以先自己思考一下然后再看题解，会有惊喜！]]></description><category></category></item><item><title><![CDATA[代码随想录 Day 32 |【第八章 贪心算法 part 01】理论基础、455.分发饼干、376. 摆动序列、53. 最大子序和]]></title><link>https://blog.youkuaiyun.com/loveJava17/article/details/145644089</link><guid>https://blog.youkuaiyun.com/loveJava17/article/details/145644089</guid><author>loveJava17</author><pubDate>Sat, 15 Feb 2025 19:56:17 +0800</pubDate><description><![CDATA[贪心的本质是选择每一阶段的局部最优，从而达到全局最优。]]></description><category></category></item></channel></rss>