<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[BlingZeng的博客]]></title><description><![CDATA[走过的路，只有借鉴的价值，没有追究的责任；现在的路，只用兴趣与否，没有对错之分；未来的路，我还不知道呢~~哈哈]]></description><link>https://blog.youkuaiyun.com/BlingZeng</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; BlingZeng]]></copyright><item><title><![CDATA[代码随想录算法训练营之JAVA｜第四十四天|198. 打家劫舍]]></title><link>https://blog.youkuaiyun.com/BlingZeng/article/details/132655160</link><guid>https://blog.youkuaiyun.com/BlingZeng/article/details/132655160</guid><author>BlingZeng</author><pubDate>Sun, 03 Sep 2023 20:44:13 +0800</pubDate><description><![CDATA[因为有个i-2，因此i是从2开始遍历的，nums的取值是i-1 所以我们需要初始化 dp[1].在只有一个可以抢的情况下，最大值就是这一个的值，因此 dp[1] = nums[0];因此递推公式为：dp[i] = max( dp[i - 1], dp[i-2] + nums[i-1]假设抢了 i 位置上的，那么i-1位置上的就不能再抢了：dp[i-2] + nums[i-1]dp[i] 代表的含义是：在 0-i 可以抢的情况下，抢的最大值是dp[i]假设没有抢 i 位置上的，那么 dp[i - 1]]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营之JAVA｜第四十三天|139. 单词拆分]]></title><link>https://blog.youkuaiyun.com/BlingZeng/article/details/132612791</link><guid>https://blog.youkuaiyun.com/BlingZeng/article/details/132612791</guid><author>BlingZeng</author><pubDate>Thu, 31 Aug 2023 22:40:05 +0800</pubDate><description><![CDATA[今天是第 天刷leetcode，立个flag，打卡60天。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营之JAVA｜第四十二天|70. 爬楼梯]]></title><link>https://blog.youkuaiyun.com/BlingZeng/article/details/132550164</link><guid>https://blog.youkuaiyun.com/BlingZeng/article/details/132550164</guid><author>BlingZeng</author><pubDate>Mon, 28 Aug 2023 23:12:24 +0800</pubDate><description><![CDATA[我发现之前觉得很难理解的东西，在你理解之后他会变得很简单。那么如何快速去理解，我觉得这个就是拉开人和人之间的差距的地方。之后的步骤就是代入完全背包的公式。需要注意的一点是：这是一个排列组合，因为和顺序是相关的。这是一个动态规划的入门题目，在看完完全背包之后，感觉也是可以使用完全背包来实现的。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营之JAVA｜第四十一天|377. 组合总和 Ⅳ]]></title><link>https://blog.youkuaiyun.com/BlingZeng/article/details/132549551</link><guid>https://blog.youkuaiyun.com/BlingZeng/article/details/132549551</guid><author>BlingZeng</author><pubDate>Mon, 28 Aug 2023 22:29:28 +0800</pubDate><description><![CDATA[今天是第41天刷leetcode，立个flag，打卡60天。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营之JAVA｜第四十天|518. 零钱兑换 II]]></title><link>https://blog.youkuaiyun.com/BlingZeng/article/details/132549307</link><guid>https://blog.youkuaiyun.com/BlingZeng/article/details/132549307</guid><author>BlingZeng</author><pubDate>Mon, 28 Aug 2023 22:20:04 +0800</pubDate><description><![CDATA[完全背包和0-1背包的区别在于遍历的顺序，因为可以无限使用，因此在一维数组中的0-1背包的遍历顺序中，先从遍历物品，然后遍历容量。但是容量的遍历必须得从大到小去遍历，因为每个物品只能使用一次的原因。还有一点需要注意的是，在0-1背包中，先遍历物品还是容量都是可以的，但是在完全背包中是有讲究的。先遍历物品在遍历容量是求的组合（重复的，但是顺序不同算一次），先遍历容量在遍历物品求的是排列（重复的，顺序不同算多次）。题目理解：相对于上一次做的零钱兑换，这一次的零钱是无数的，因此可以有更多的选择。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营之JAVA｜第三十九天|474. 一和零]]></title><link>https://blog.youkuaiyun.com/BlingZeng/article/details/132521638</link><guid>https://blog.youkuaiyun.com/BlingZeng/article/details/132521638</guid><author>BlingZeng</author><pubDate>Sun, 27 Aug 2023 12:07:35 +0800</pubDate><description><![CDATA[今天是第39天刷leetcode，立个flag，打卡60天。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营之JAVA｜第三十八天|494. 目标和]]></title><link>https://blog.youkuaiyun.com/BlingZeng/article/details/132521102</link><guid>https://blog.youkuaiyun.com/BlingZeng/article/details/132521102</guid><author>BlingZeng</author><pubDate>Sun, 27 Aug 2023 11:01:59 +0800</pubDate><description><![CDATA[今天是第38天刷leetcode，立个flag，打卡60天。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营之JAVA｜第三十七天|1049. 最后一块石头的重量 II]]></title><link>https://blog.youkuaiyun.com/BlingZeng/article/details/132517059</link><guid>https://blog.youkuaiyun.com/BlingZeng/article/details/132517059</guid><author>BlingZeng</author><pubDate>Sat, 26 Aug 2023 23:08:30 +0800</pubDate><description><![CDATA[今天是第37天刷leetcode，立个flag，打卡60天。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营之JAVA｜第三十六天|343. 整数拆分]]></title><link>https://blog.youkuaiyun.com/BlingZeng/article/details/132504445</link><guid>https://blog.youkuaiyun.com/BlingZeng/article/details/132504445</guid><author>BlingZeng</author><pubDate>Fri, 25 Aug 2023 23:54:49 +0800</pubDate><description><![CDATA[今天是第36天刷leetcode，立个flag，打卡60天。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营之JAVA｜第三十五天|343. 整数拆分]]></title><link>https://blog.youkuaiyun.com/BlingZeng/article/details/132437962</link><guid>https://blog.youkuaiyun.com/BlingZeng/article/details/132437962</guid><author>BlingZeng</author><pubDate>Tue, 22 Aug 2023 22:02:13 +0800</pubDate><description><![CDATA[确定遍历顺序，先来看看递归公式：dp[i] = max(dp[i], max((i - j) * j, dp[i - j] * j));dp[i] 是依靠 dp[i - j]的状态，所以遍历i一定是从前向后遍历，先有dp[i - j]再有dp[i]。这里我只初始化dp[2] = 1，从dp[i]的定义来说，拆分数字2，得到的最大乘积是1，这个没有任何异议！严格从dp[i]的定义来说，dp[0] dp[1] 就不应该初始化，也就是没有意义的数值。dp[i]：分拆数字i，可以得到的最大乘积为dp[i]。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营之JAVA｜第三十五天|509. 斐波那契数]]></title><link>https://blog.youkuaiyun.com/BlingZeng/article/details/132398020</link><guid>https://blog.youkuaiyun.com/BlingZeng/article/details/132398020</guid><author>BlingZeng</author><pubDate>Sun, 20 Aug 2023 23:36:10 +0800</pubDate><description><![CDATA[这个一般情况是不容易找到的，我一般是通过从比较小的数值去寻找规律，或者是根据题目的含义来找到递推的公式。因此在终点位置有两个入口可以到达终点，这两个入口的值相加就是这个终点的值。根据公式，我们会想确定一条边的值，当然确定一列的值也是可以的。初始化也是比较简单的，如果m=1 或者 n = 1 的情况下，都只会有一种路径，因此初始化也搞定了。这个是比较好理解的，dp(m,n) 表示的含义是：在M*N的棋盘中有多少种方式可以到达终点。遇到这种题目，会第一时间想起代码随想录的五个步骤，按照步骤一步一步的来。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营之JAVA｜第三十四天|509. 斐波那契数]]></title><link>https://blog.youkuaiyun.com/BlingZeng/article/details/132397631</link><guid>https://blog.youkuaiyun.com/BlingZeng/article/details/132397631</guid><author>BlingZeng</author><pubDate>Sun, 20 Aug 2023 22:56:04 +0800</pubDate><description><![CDATA[从递归公式dp[i] = dp[i - 1] + dp[i - 2];中可以看出，dp[i]是依赖 dp[i - 1] 和 dp[i - 2]，那么遍历的顺序一定是从前到后遍历的。如果代码写出来，发现结果不对，就把dp数组打印出来看看和我们推导的数列是不是一致的。dp[i]的定义为：第i个数的斐波那契数值是dp[i]简单的只是让你知道更多的信息，复杂是隐去了更多的信息。这是一道很简单的动态规划。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营之JAVA｜第三十三天|738. 单调递增的数字]]></title><link>https://blog.youkuaiyun.com/BlingZeng/article/details/132396085</link><guid>https://blog.youkuaiyun.com/BlingZeng/article/details/132396085</guid><author>BlingZeng</author><pubDate>Sun, 20 Aug 2023 21:21:28 +0800</pubDate><description><![CDATA[因为要求单调递增，因此可能会出现 类似 3799998  这种需要修改的值在在第一个九的位置的这种情况。代码随想录的方法是找到最大值出现的最后一位，然后通过减1的方式不断的回退idx的值，最后找到第一个idx的值，我感觉我的方法会更加简单和容易理解。如果符合条件 i的值比i+1的值更大，那么就会使用idx-1，然后后面填充9。有时候花掉一点点的空间，换取更加简单粗暴的方式，我认为是值得的。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营之JAVA｜第三十二天|435. 无重叠区间]]></title><link>https://blog.youkuaiyun.com/BlingZeng/article/details/132352870</link><guid>https://blog.youkuaiyun.com/BlingZeng/article/details/132352870</guid><author>BlingZeng</author><pubDate>Thu, 17 Aug 2023 23:48:56 +0800</pubDate><description><![CDATA[如果三个区间有重叠，那么我取一条就行，如果五个区间有重叠，我趣一条就行。题目理解：找出重叠的最小个数，反过来说就是找出不重叠的最大个数。你看如果多少个区间有重叠，我都是取一条。因此计算不重叠会更好算。当有重叠的时候，我们要跟新尾巴的值，取这两条线段的尾巴的最小值。为什么要计算不重叠的，而不是重叠的呢，因为不重叠的会更好算。如果尾巴大于头，说明有重叠，否则没有重叠。取前面线段的尾和后面线段的头去比较。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营之JAVA｜第三十一天|860. 柠檬水找零]]></title><link>https://blog.youkuaiyun.com/BlingZeng/article/details/132309222</link><guid>https://blog.youkuaiyun.com/BlingZeng/article/details/132309222</guid><author>BlingZeng</author><pubDate>Tue, 15 Aug 2023 23:53:13 +0800</pubDate><description><![CDATA[只需要在找零钱的时候符合这三种情况即可。题目理解：是否满足找零钱的需求。这个好像没有什么难度。860. 柠檬水找零。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营之JAVA｜第三十天|134. 加油站]]></title><link>https://blog.youkuaiyun.com/BlingZeng/article/details/132287942</link><guid>https://blog.youkuaiyun.com/BlingZeng/article/details/132287942</guid><author>BlingZeng</author><pubDate>Mon, 14 Aug 2023 23:57:22 +0800</pubDate><description><![CDATA[i从0开始累加rest[i]，和记为curSum，一旦curSum小于零，说明[0, i]区间都不能作为起始位置，因为这个区间选择任何一个位置作为起点，到i这里都会断油，那么起始位置从i+1算起，再从0计算curSum。如果 curSum<0 说明 区间和1 + 区间和2 < 0， 那么 假设从上图中的位置开始计数curSum不会小于0的话，就是 区间和2>0。那么为什么一旦[0，i] 区间和为负数，起始位置就可以是i+1呢，i+1后面就不会出现更大的负数？当你得意的时候，往往就是你失败的时候。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营之JAVA｜第二十九天|1005. K 次取反后最大化的数组和]]></title><link>https://blog.youkuaiyun.com/BlingZeng/article/details/132287068</link><guid>https://blog.youkuaiyun.com/BlingZeng/article/details/132287068</guid><author>BlingZeng</author><pubDate>Mon, 14 Aug 2023 22:24:12 +0800</pubDate><description><![CDATA[思路也是比较容易理解：先将数组进行排序，尽可能的将数组中的负数都转化成正数。如果数组都是被转化成正数后，且还需x次取反，如果x是偶数，则不需要操作，如果x是奇数，将全部正数的数组再次排序后，将第一个转换成负数。在计算数组的累加和即可。题目理解：数组在进行K次取反后，求累加的最大值。1005. K 次取反后最大化的数组和。贪心算法的解题过程会更加的清晰易懂。取反操作可重复用于同一个数字。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营之JAVA｜第二十八天|122. 买卖股票的最佳时机 II]]></title><link>https://blog.youkuaiyun.com/BlingZeng/article/details/132267777</link><guid>https://blog.youkuaiyun.com/BlingZeng/article/details/132267777</guid><author>BlingZeng</author><pubDate>Mon, 14 Aug 2023 00:45:36 +0800</pubDate><description><![CDATA[今天是第 天刷leetcode，立个flag，打卡60天。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营之JAVA｜第二十七天| 455. 分发饼干]]></title><link>https://blog.youkuaiyun.com/BlingZeng/article/details/132267496</link><guid>https://blog.youkuaiyun.com/BlingZeng/article/details/132267496</guid><author>BlingZeng</author><pubDate>Mon, 14 Aug 2023 00:12:11 +0800</pubDate><description><![CDATA[今天是第27天刷leetcode，立个flag，打卡60天。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营之JAVA｜第二十六天| 332. 重新安排行程]]></title><link>https://blog.youkuaiyun.com/BlingZeng/article/details/132265616</link><guid>https://blog.youkuaiyun.com/BlingZeng/article/details/132265616</guid><author>BlingZeng</author><pubDate>Sun, 13 Aug 2023 21:50:26 +0800</pubDate><description><![CDATA[今天是第26天刷leetcode，立个flag，打卡60天。]]></description><category></category></item></channel></rss>