<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[dkingf的博客]]></title><description><![CDATA[目前在代码随想录训练营]]></description><link>https://blog.youkuaiyun.com/dkingf</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; dkingf]]></copyright><item><title><![CDATA[算法学习 || 动态规划（买卖股票的最佳时机3）]]></title><link>https://blog.youkuaiyun.com/dkingf/article/details/153045667</link><guid>https://blog.youkuaiyun.com/dkingf/article/details/153045667</guid><author>dkingf</author><pubDate>Sat, 11 Oct 2025 21:52:06 +0800</pubDate><description><![CDATA[重要的是搞清楚每一天有多少种状态，对应的递推公式，其他与之前的买卖股票思路一致。]]></description><category></category></item><item><title><![CDATA[算法学习 || 动态规划（买卖股票的最佳时机2）]]></title><link>https://blog.youkuaiyun.com/dkingf/article/details/152807239</link><guid>https://blog.youkuaiyun.com/dkingf/article/details/152807239</guid><author>dkingf</author><pubDate>Thu, 09 Oct 2025 17:47:39 +0800</pubDate><description><![CDATA[与之前买卖股票1不同的是，可以多次交易，影响的是递推公式在当天持有后卖出或买入时，要加上之前的收益，而买卖股票1因为只能交易一次，所以之前的收益是0。]]></description><category></category></item><item><title><![CDATA[算法学习 || 动态规划（买卖股票的最佳时机）]]></title><link>https://blog.youkuaiyun.com/dkingf/article/details/152606224</link><guid>https://blog.youkuaiyun.com/dkingf/article/details/152606224</guid><author>dkingf</author><pubDate>Mon, 06 Oct 2025 17:06:17 +0800</pubDate><description><![CDATA[1.持有股票状态的递推数列：dp[i][0] = max（dp[i-1][0]  ,  -prices[ i ]）;今天的持有股票利润由昨天决定和今天决定，要哪一天持有通过取最大值决定（注意dp数组表示利润，持有则要支付钱，当前利润就为负数，所以取最大值不影响）2.未持有股票状态的递推数列：dp[ i ][ 1 ] = max(dp[i-1][1],prices[i] + dp[i-1][0]);（注意dp数组中是利润，亏损为负，所以prices[i] + dp[i-1][0]直接加就行）]]></description><category></category></item><item><title><![CDATA[大模型部署]]></title><link>https://blog.youkuaiyun.com/dkingf/article/details/149076259</link><guid>https://blog.youkuaiyun.com/dkingf/article/details/149076259</guid><author>dkingf</author><pubDate>Sun, 13 Jul 2025 20:58:13 +0800</pubDate><description><![CDATA[本人使用的是wsl2（window10以上版本），使用ubuntu（一款linux系统），然后在ubuntu上使用ollama（开源的本地大语言模型运行框架）运行大模型此图是一个基本的部署架构图。]]></description><category></category></item><item><title><![CDATA[代码随想录训练营第39天 || 198. 打家劫舍 213. 打家劫舍 II 337. 打家劫舍 III]]></title><link>https://blog.youkuaiyun.com/dkingf/article/details/147440017</link><guid>https://blog.youkuaiyun.com/dkingf/article/details/147440017</guid><author>dkingf</author><pubDate>Wed, 23 Apr 2025 22:03:08 +0800</pubDate><description><![CDATA[所以每个房屋都有盗取和不盗取两个选择，盗不盗取取决于金额，所以递推公式为dp[ i ] = max（dp[ i-1] (不盗取），dp[i-2 ]+nums[ i ]（盗取））dp[ i ] = max（dp[ i-1] (不盗取），dp[i-2 ]+nums[ i ]（盗取））3.dp数组的初始化：因为递推公式要取最大盗取金额，同时金额都为非负数，所以初始化为最小值0。3.dp数组的初始化：因为递推公式要取最大盗取金额，同时金额都为非负数，所以初始化为最小值0。//{ }是列表的初始化来赋值数组。]]></description><category></category></item><item><title><![CDATA[代码随想录训练营38天 || 322. 零钱兑换 279. 完全平方数 139. 单词拆分]]></title><link>https://blog.youkuaiyun.com/dkingf/article/details/147414553</link><guid>https://blog.youkuaiyun.com/dkingf/article/details/147414553</guid><author>dkingf</author><pubDate>Tue, 22 Apr 2025 22:50:28 +0800</pubDate><description><![CDATA[但是先遍历背包，再遍历物品不同，此时由于先遍历背包，所以只能在遍历完物品后，在判断语句 if (i - coins[j] >= 0 && dp[i - coins[j]]!先遍历物品，再遍历背包，先遍历背包，再遍历物品都可以，不同的地方是，在先遍历物品，再遍历背包时，因为先遍历物品，所以j可以直接在coins[ i ]等于物品时开始，dp[ 0 ]是背包容量为0的时候，硬币数量为0，因为递归公式是求最小的数值，所以初始化其他的数要是最大值，才不会影响结果。j为背包容量，i为物品的下标。]]></description><category></category></item><item><title><![CDATA[代码随想录训练营37天 ||518. 零钱兑换 II 377. 组合总和 Ⅳ 57. 爬楼梯]]></title><link>https://blog.youkuaiyun.com/dkingf/article/details/147400974</link><guid>https://blog.youkuaiyun.com/dkingf/article/details/147400974</guid><author>dkingf</author><pubDate>Mon, 21 Apr 2025 19:46:05 +0800</pubDate><description><![CDATA[思路和01背包差不多，不同的是在遍历顺序的选择上有所不同。组合问题：先遍历物品，再遍历背包。排列问题：先遍历背包，再遍历物品。这种分配不是绝对的，但在一般情况下是最简单的，逻辑简单的。此题是一个排列问题，所以在遍历顺序时，选择先遍历背包，再遍历物品。此题是一个组合问题，所以选择先遍历物品，再遍历背包。排列问题，遍历顺序选择先遍历背包，再遍历物品。1.对于遍历顺序的不同、]]></description><category></category></item><item><title><![CDATA[代码随想录训练营第36天 ||1049. 最后一块石头的重量 II 494. 目标和 474. 一和零]]></title><link>https://blog.youkuaiyun.com/dkingf/article/details/147377331</link><guid>https://blog.youkuaiyun.com/dkingf/article/details/147377331</guid><author>dkingf</author><pubDate>Sun, 20 Apr 2025 23:47:34 +0800</pubDate><description><![CDATA[01背包问题：题意说要求粉碎石头后留下的最小石头重量，石头粉碎的规则是两个石头如果重量相等，同时粉碎，如果重量不相等，粉碎后的重量是大减小。抽象成背包问题，就是尽可能装满总石头重量一半的背包，此时粉碎的最彻底，为什么粉碎的更彻底，因为尽可能装满石头重量一半的背包，这样能装进背包的这部分，就会对应另一半的部分同时粉碎，此时剩下的就是无法粉碎的石头。1.在理解背包是二维的容量，并且01背包的常规滚动数组的方法，但是因为背包容量是二维的，所以还是使用二维数组，想要使用常规01背包二维数组的方法，要使用三维数组。]]></description><category></category></item><item><title><![CDATA[代码随想录训练营第35天 || 01背包问题 416. 分割等和子集]]></title><link>https://blog.youkuaiyun.com/dkingf/article/details/147345469</link><guid>https://blog.youkuaiyun.com/dkingf/article/details/147345469</guid><author>dkingf</author><pubDate>Sat, 19 Apr 2025 10:50:59 +0800</pubDate><description><![CDATA[就是将一些有价值的物品（只能放一次），放入有限容量的背包里，怎么放价值最大。二维数组方法。]]></description><category></category></item><item><title><![CDATA[代码随想录训练营第34天 || 62. 不同路径 63. 不同路径 II]]></title><link>https://blog.youkuaiyun.com/dkingf/article/details/147265633</link><guid>https://blog.youkuaiyun.com/dkingf/article/details/147265633</guid><author>dkingf</author><pubDate>Wed, 16 Apr 2025 09:36:22 +0800</pubDate><description><![CDATA[2.确定递推公式：因为中间的位置最多只能由左边移动1，上面移动一到达，所以公式是dp[i][j] = dp[i - 1][j] + dp[i][j - 1]3.dp数组的初始化：注意特殊情况，靠上的一行和靠左的一列都是只能一直向右移动，或一直向下移动，所以只有一条路径，所以把这些位置初始化为1。2.确定递推公式：dp[i][j] = dp[i - 1][j] + dp[i][j - 1]1.确定dp数组下标及其含义：dp数组是用来代表到达每一个位置的所有路径数，下标是对应的位置。]]></description><category></category></item><item><title><![CDATA[代码随想录训练营 || 509. 斐波那契数 70. 爬楼梯 使用最小花费爬楼梯]]></title><link>https://blog.youkuaiyun.com/dkingf/article/details/147258312</link><guid>https://blog.youkuaiyun.com/dkingf/article/details/147258312</guid><author>dkingf</author><pubDate>Tue, 15 Apr 2025 21:25:37 +0800</pubDate><description><![CDATA[从递归公式dp[i] = dp[i - 1] + dp[i - 2];中可以看出，dp[i]是依赖 dp[i - 1] 和 dp[i - 2]，那么遍历的顺序一定是从前到后遍历的。2.确定递推公式：dp[ i ] = dp[i-1] + dp[i-2] 原因是当前阶层只能由下一层迈一步，或下两层迈两步到达。2.确定递推公式：dp[i] = min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);dp[i]的定义为：第i个数的斐波那契数值是dp[i]1.对于递推公式的如何推导的。]]></description><category></category></item><item><title><![CDATA[代码随想录训练营第31天 || 56. 合并区间 738. 单调递增的数字]]></title><link>https://blog.youkuaiyun.com/dkingf/article/details/147231043</link><guid>https://blog.youkuaiyun.com/dkingf/article/details/147231043</guid><author>dkingf</author><pubDate>Mon, 14 Apr 2025 19:40:11 +0800</pubDate><description><![CDATA[i++)//flag的作用很巧妙，如果上一个循环没有进入if，也就是最大单调递增数字就是自己本身，可以直接跳过此循环。与之前射气球的题很像，也是先用左右边界的一个边界排序，再判断是否重叠。左边界排序，使用正序进行遍历，右边界排序逆序进行遍历，原因是左边界排序，最左边的左边界一定是最小的，但右边界不一定，同理右边界。一个循环判断当前数字是否为递增数字，如果是直接返回，如果不是，就记录非递增数字的最高位，把最高位减一，然后把最高位的低位都改为9，此时就为最大递增数字。]]></description><category></category></item><item><title><![CDATA[代码随想录训练营第30天 || 452. 用最少数量的箭引爆气球 435. 无重叠区间 763. 划分字母区间]]></title><link>https://blog.youkuaiyun.com/dkingf/article/details/147196055</link><guid>https://blog.youkuaiyun.com/dkingf/article/details/147196055</guid><author>dkingf</author><pubDate>Sun, 13 Apr 2025 19:54:07 +0800</pubDate><description><![CDATA[非常像，弓箭的数量就相当于是非交叉区间的数量，只要把弓箭那道题目代码里射爆气球的判断条件加个等号（认为[0，1][1，2]不是相邻区间），然后用总区间数减去弓箭数量 就是要移除的区间数量了。通过左边界或右边界排序，以右边界为例，排序后，判断右边界是否与右边区间的左边界重叠，如果重叠，重新切割右面的区间，直到不重叠为止，这样就保证重叠的区间最多，同时消耗的箭最少。对于气球数量的错误理解：正确的是，每一个区间里有气球，只要射到区间内，区间内的气球就会全中。局部最优：当气球出现重叠，一起射，所用弓箭最少。]]></description><category></category></item><item><title><![CDATA[代码随想录训练营第29天 || 134. 加油站 135. 分发糖果 860. 柠檬水找零 406. 根据身高重建队列]]></title><link>https://blog.youkuaiyun.com/dkingf/article/details/147177788</link><guid>https://blog.youkuaiyun.com/dkingf/article/details/147177788</guid><author>dkingf</author><pubDate>Sat, 12 Apr 2025 22:55:54 +0800</pubDate><description><![CDATA[讲解：代码随想录。]]></description><category></category></item><item><title><![CDATA[代码随想录训练营28天 || 122. 买卖股票的最佳时机 II 55. 跳跃游戏 45. 跳跃游戏 II 1005. K 次取反后最大化的数组和]]></title><link>https://blog.youkuaiyun.com/dkingf/article/details/147155117</link><guid>https://blog.youkuaiyun.com/dkingf/article/details/147155117</guid><author>dkingf</author><pubDate>Fri, 11 Apr 2025 22:22:55 +0800</pubDate><description><![CDATA[不用管具体跳到哪一格，而是边遍历格子，边计算最大跳到的范围，如果遇到跳不到的情况就中止。]]></description><category></category></item><item><title><![CDATA[代码随想录训练营第27天 || 455. 分发饼干 376. 摆动序列 53. 最大子数组和]]></title><link>https://blog.youkuaiyun.com/dkingf/article/details/147129571</link><guid>https://blog.youkuaiyun.com/dkingf/article/details/147129571</guid><author>dkingf</author><pubDate>Thu, 10 Apr 2025 23:07:18 +0800</pubDate><description><![CDATA[1.对于第二个将count重置为0时，会影响result：但是观察发现在判断result和count的关系前，count就已经加上了数组内的数，所以不用担心数组内全是负数的情况。局部最优，把最大的饼干给胃口最大的孩子，因为目的是满足最多的孩子，最大的饼干可以满足胃口大的孩子，也可以满足胃口小的孩子，但是小的饼干只能满足胃口小的孩子。1.对于特殊情况的理解，对于只有两个元素的情况，为了符合大于两个元素的判断情况，让result默认为1，1.对于先遍历谁的问题，只能是饼干去匹配小孩的胃口，]]></description><category></category></item><item><title><![CDATA[代码随想录训练营第25天 || 491. 非递减子序列 46. 全排列 47. 全排列 II]]></title><link>https://blog.youkuaiyun.com/dkingf/article/details/147100010</link><guid>https://blog.youkuaiyun.com/dkingf/article/details/147100010</guid><author>dkingf</author><pubDate>Wed, 09 Apr 2025 19:33:44 +0800</pubDate><description><![CDATA[递归：抽象为一颗树，不能使用标记数组进行去重，因为不能排序，所以使用一个集合来去重，如果使用过就放入集合，每当取数时，如果在集合中找到，就跳过当前数，来去重，注意集合是每遍历层就会重置，这一步很巧妙，避免同层重复。2..只要是树层去重，使用标记数组，就要进行排序：原因是如果不排序，重复的元素不会相邻，这样就没法通过查找标记数组来确定，是树层的遍历，还是树枝的遍历。递归：相比于上一题，因为原数组有了重复的数，但是结果又不能有重复的，所以不光需要树枝去重，还需要树层去重。1.对于树枝去重和树层去重的理解。]]></description><category></category></item><item><title><![CDATA[代码随想录训练营第24天 || 93. 复原 IP 地址 78. 子集]]></title><link>https://blog.youkuaiyun.com/dkingf/article/details/147072557</link><guid>https://blog.youkuaiyun.com/dkingf/article/details/147072557</guid><author>dkingf</author><pubDate>Tue, 08 Apr 2025 17:17:31 +0800</pubDate><description><![CDATA[1.对于used列表的理解：当进行向叶子节点的遍历时，不需要去重，当遍历完叶子节点，回到上一层的树时，需要进行去重，因为此时从左到右遍历会出现与之前相同的结果子集。1.对于break的理解：因为当前区间已经大于255，或者为01时再加数的话，也是不满足的所以直接结束遍历。递归：是组合|| 和子集两个题的结合体，需要在遍历同一层时，进行去重，需要一个used列表进行层遍历的判断。1.对于向result添加的方式：在递归函数的开头，中止条件的前添加结果，可以在一开始添加进去空集。]]></description><category></category></item><item><title><![CDATA[代码随想录训练营第23天 || 1.组合总和 2.组合总和 II 3.分割回文串]]></title><link>https://blog.youkuaiyun.com/dkingf/article/details/147042387</link><guid>https://blog.youkuaiyun.com/dkingf/article/details/147042387</guid><author>dkingf</author><pubDate>Mon, 07 Apr 2025 19:38:36 +0800</pubDate><description><![CDATA[所以每当遍历到符合目标值的组合后，就不能再重复使用candidates（给出的候选人集合，候选人集合）中与前一个值相同的值作为下一个候选人集合的开头，想象成树，就是当遍历同一层时，就不能使用相同的元素，否则会出现重复的集合。1.对于used数组的作用：用来判断当前遍历到的候选人是否为某一个path结果的开头节点，通过检测上一个节点的bool值来判断，当为false时，则是某一个path结果的开头节点，就直接跳过，不能使用重复的值，否则会有重复的结果集。]]></description><category></category></item><item><title><![CDATA[代码随想录训练营第22天 || 1.组合 2.组合总和 III 3.电话号码的字母组合]]></title><link>https://blog.youkuaiyun.com/dkingf/article/details/147032621</link><guid>https://blog.youkuaiyun.com/dkingf/article/details/147032621</guid><author>dkingf</author><pubDate>Mon, 07 Apr 2025 00:07:41 +0800</pubDate><description><![CDATA[讲解：代码随想录。]]></description><category></category></item></channel></rss>