<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[m0_61358347的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/m0_61358347</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; m0_61358347]]></copyright><item><title><![CDATA[算法-交替删除操作后最后剩下的整数-跟着灵茶山艾府学算法]]></title><link>https://blog.youkuaiyun.com/m0_61358347/article/details/166686209</link><guid>https://blog.youkuaiyun.com/m0_61358347/article/details/166686209</guid><author>m0_61358347</author><pubDate>Sat, 26 Sep 2026 11:23:08 +0800</pubDate><description><![CDATA[如果 n 是偶数，那么序列的最后一个数被删除，倒数第二个数保留。操作后，首项 start 变成序列的倒数第二个数 start+(n−2)⋅d，其中 n 和 d 都是操作之前的值。操作后，首项 start 变成序列的最后一个数 start+(n−1)⋅d，其中 n 和 d 都是操作之前的值。以1-9的删除为例说明一下删除过程：1，2，3，4，5，6，7，8，9。第二次删除后：1，5，9 从右往左看公差d=-4=2*（-2）第一次删除后：1，3，5，7，9 从左往右看公差d=2。这个思路比较容易想到。]]></description><category></category></item><item><title><![CDATA[算法-交替方向的最小路径代价III-Dijkstra最短路径算法]]></title><link>https://blog.youkuaiyun.com/m0_61358347/article/details/163344022</link><guid>https://blog.youkuaiyun.com/m0_61358347/article/details/163344022</guid><author>m0_61358347</author><pubDate>Thu, 30 Jul 2026 21:13:46 +0800</pubDate><description><![CDATA[思路：Dijkstra最短路径算法模版题，需要注意的是除了优先级队列，还需要一个最小值数组维护答案，举例：比如从A出发到C，有两条路径，A->C是权值是5，先A->B,全值是3，然后B->C,权值是4，按优先级队列，会先走A->B，再走B->C，权值和是7，但实际上是从A->C权值是5，权值最小，这就需要一个最小值数组，另外需要考虑的就是最小值数组维护的维度。因此，无论是否支付了惩罚代价，所需遵循的奇偶性规则在每次行动后都会交替改变。的单元格，或者在当前单元格等待。，表示一个网格的行数和列数。]]></description><category></category></item><item><title><![CDATA[算法-M个非重叠子数组最大和II-WQS二分学习]]></title><link>https://blog.youkuaiyun.com/m0_61358347/article/details/163328851</link><guid>https://blog.youkuaiyun.com/m0_61358347/article/details/163328851</guid><author>m0_61358347</author><pubDate>Thu, 30 Jul 2026 11:01:42 +0800</pubDate><description><![CDATA[【代码】算法-M个非重叠子数组最大和II-WQS二分学习。]]></description><category></category></item><item><title><![CDATA[算法-好子序列查询-数学+线段树]]></title><link>https://blog.youkuaiyun.com/m0_61358347/article/details/163324986</link><guid>https://blog.youkuaiyun.com/m0_61358347/article/details/163324986</guid><author>m0_61358347</author><pubDate>Thu, 30 Jul 2026 10:55:11 +0800</pubDate><description><![CDATA[是指通过删除原序列中的某些元素或不删除任何元素，并且不改变剩余元素相对顺序后得到的序列。5、所选序列最大公约数(最值)通过线段树来维护。在每次查询更新后，判断当前数组中是否存在。返回一个整数，表示使得数组中存在。满足以下条件，则称其为。思路：数学分析+线段树。]]></description><category></category></item><item><title><![CDATA[算法-删除元素后最大固定点数目-典型最长增长序列算法]]></title><link>https://blog.youkuaiyun.com/m0_61358347/article/details/163251270</link><guid>https://blog.youkuaiyun.com/m0_61358347/article/details/163251270</guid><author>m0_61358347</author><pubDate>Mon, 27 Jul 2026 21:38:16 +0800</pubDate><description><![CDATA[当数组中nums[i]的元素x需要移动i-x步时，比x大的元素nums[j]=z需要的移动步数必须大于i-x步时才能让i,j同时成为固定点位，因为nums[i]移动的i-x步的时候，nums[j]也会移动的i-x步，如果nums[j]需要的移动步数小于nums[i]时，则两者不能同时成为固定点位。需要维护num[i]开始的最长增长序列长度和nums[j]开始的最长增长序列长度。要求i==nums[i],当i增加的时候nums[i]也需要增加，也就是连续增长序列，也即本题求最长连续增长序列。]]></description><category></category></item><item><title><![CDATA[算法-照亮道路的最少灯泡数-差分]]></title><link>https://blog.youkuaiyun.com/m0_61358347/article/details/163250883</link><guid>https://blog.youkuaiyun.com/m0_61358347/article/details/163250883</guid><author>m0_61358347</author><pubDate>Mon, 27 Jul 2026 20:45:20 +0800</pubDate><description><![CDATA[差分：这题有点类似元素的入栈和出栈，灯可以照亮的初始位置表示入栈，可以照亮的结束位置表示出栈，入栈和出栈之间的部分可以被照亮。位置都可见所需安装的最少额外灯泡数量。一个正常工作的灯泡照亮，则该位置是。因此，所需的最少额外灯泡数量为 2。，表示一条路上从 0 到。（包含边界）的位置。]]></description><category></category></item><item><title><![CDATA[算法-滑动窗口最大值]]></title><link>https://blog.youkuaiyun.com/m0_61358347/article/details/162910211</link><guid>https://blog.youkuaiyun.com/m0_61358347/article/details/162910211</guid><author>m0_61358347</author><pubDate>Wed, 15 Jul 2026 17:22:57 +0800</pubDate><description><![CDATA[的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的。滑动窗口的位置                最大值。滑动窗口每次只向右移动一位。]]></description><category></category></item><item><title><![CDATA[算法-字符流-字典树&AC自动机]]></title><link>https://blog.youkuaiyun.com/m0_61358347/article/details/162194033</link><guid>https://blog.youkuaiyun.com/m0_61358347/article/details/162194033</guid><author>m0_61358347</author><pubDate>Mon, 22 Jun 2026 11:24:47 +0800</pubDate><description><![CDATA[思路一中需要一个StringBuilder记录已经出现的字符，实际上在字典树中构建AC自动机就可以去掉这个StringBuilder,AC自动机实际上是KMP思想+字典树的结合，当匹配时候的时候，可以不用回到root节点重新开始匹配，而是增加了失败指针，跳转到失败指针的继续匹配，提升性能。思路二：字典树+AC自动机。]]></description><category></category></item><item><title><![CDATA[算法-k个一组翻转链表]]></title><link>https://blog.youkuaiyun.com/m0_61358347/article/details/162166803</link><guid>https://blog.youkuaiyun.com/m0_61358347/article/details/162166803</guid><author>m0_61358347</author><pubDate>Mon, 22 Jun 2026 11:01:51 +0800</pubDate><description><![CDATA[用双向链表解决该问题，需要使用o(k)的辅助空间，实际上用常量的空间复杂度就可以解决该问题。是一个正整数，它的值小于或等于链表的长度。你不能只是单纯的改变节点内部的值，而是需要实际进行节点交换。的整数倍，那么请将最后剩余的节点保持原有顺序。个节点一组进行翻转，请你返回修改后的链表。用双向链表解决该问题。]]></description><category></category></item><item><title><![CDATA[算法-阶乘函数后K个零]]></title><link>https://blog.youkuaiyun.com/m0_61358347/article/details/161853414</link><guid>https://blog.youkuaiyun.com/m0_61358347/article/details/161853414</guid><author>m0_61358347</author><pubDate>Wed, 10 Jun 2026 10:49:16 +0800</pubDate><description><![CDATA[4、如果一个数n包含的5的数量正好是K个，那么n+1,n+2,n+3,n+4,这4个数包含的5的数量也是K个。加上n这个数就是5个数，小于n的数，不够k个5，大于等于n+5的数，5的数量大于k个。2、阶乘中2的数量远远多于5的数量，以10以内的数字为例，2，4，6，8都有2，5却只有一个。1、要想产生0，就需要有2和5，2*5就会得到0，像10，100等都可以拆成多个2和5相乘。3、想要有K个0，可以在5*K的范围内查找即可，因为5*k表示的数的阶乘，5的数量>=k。末尾是 0 的数量。]]></description><category></category></item><item><title><![CDATA[算法-灌溉花园的最少龙头数目-贪心]]></title><link>https://blog.youkuaiyun.com/m0_61358347/article/details/161852621</link><guid>https://blog.youkuaiyun.com/m0_61358347/article/details/161852621</guid><author>m0_61358347</author><pubDate>Wed, 10 Jun 2026 10:33:18 +0800</pubDate><description><![CDATA[这道题可以用动态规划解，也可以用贪心算法解，贪心思路：在灌溉的开始区域相同的情况下，选择结束区域最远的水龙头打开，这样就可以保证用最少的水龙头灌溉花园。只需要打开点 1 处的水龙头即可灌溉整个花园 [0,5]。点 0 处的水龙头可以灌溉区间 [-3,3]点 1 处的水龙头可以灌溉区间 [-3,5]点 2 处的水龙头可以灌溉区间 [1,3]点 3 处的水龙头可以灌溉区间 [2,4]点 4 处的水龙头可以灌溉区间 [4,4]点 5 处的水龙头可以灌溉区间 [5,5]处的水龙头，可以灌溉的区域为。]]></description><category></category></item><item><title><![CDATA[算法-计算右侧小于当前元素的个数-分治&归并思想]]></title><link>https://blog.youkuaiyun.com/m0_61358347/article/details/161823685</link><guid>https://blog.youkuaiyun.com/m0_61358347/article/details/161823685</guid><author>m0_61358347</author><pubDate>Tue, 09 Jun 2026 11:32:51 +0800</pubDate><description><![CDATA[1、归并的时候右边的数组元素一定是在左边组数组元素的右边。2、由于是有序数组可以进行快速的统计，提升统计的效率。个更小的元素 (2 和 1)，按要求返回一个新数组。个更小的元素 (1)个更小的元素 (1)]]></description><category></category></item><item><title><![CDATA[算法-乘法表中第K小的数-二分]]></title><link>https://blog.youkuaiyun.com/m0_61358347/article/details/161799698</link><guid>https://blog.youkuaiyun.com/m0_61358347/article/details/161799698</guid><author>m0_61358347</author><pubDate>Mon, 08 Jun 2026 14:29:24 +0800</pubDate><description><![CDATA[但是你能在乘法表中快速找到第。的乘法表中，找出并返回第。第 5 小的数字是 3。第 6 小的数字是 6。的一个整数矩阵，其中。]]></description><category></category></item><item><title><![CDATA[算法-掉落的方块-线段树]]></title><link>https://blog.youkuaiyun.com/m0_61358347/article/details/161753882</link><guid>https://blog.youkuaiyun.com/m0_61358347/article/details/161753882</guid><author>m0_61358347</author><pubDate>Sat, 06 Jun 2026 22:25:14 +0800</pubDate><description><![CDATA[第 2 个方块掉落后，最高的堆叠可以由方块 1 组成也可以由方块 2 组成，堆叠的最高高度为 100。第 3 个方块掉落后，最高的堆叠仍然由方块 1 和 2 组成，堆叠的最高高度为 5。第 2 个方块掉落后，最高的堆叠由方块 1 和 2 组成，堆叠的最高高度为 5。第 1 个方块掉落后，最高的堆叠由方块 1 组成，堆叠的最高高度为 100。第 1 个方块掉落后，最高的堆叠由方块 1 组成，堆叠的最高高度为 2。注意，方块 2 擦过方块 1 的右侧边，但不会算作在方块 1 上着陆。]]></description><category></category></item><item><title><![CDATA[算法-二叉树的最近公共祖先]]></title><link>https://blog.youkuaiyun.com/m0_61358347/article/details/161724270</link><guid>https://blog.youkuaiyun.com/m0_61358347/article/details/161724270</guid><author>m0_61358347</author><pubDate>Fri, 05 Jun 2026 16:37:17 +0800</pubDate><description><![CDATA[中最近公共祖先的定义为：“对于有根树 T 的两个结点 p、q，最近公共祖先表示为一个结点 x，满足 x 是 p、q 的祖先且 x 的深度尽可能大（例如，给定如下二叉树:  root = [3,5,1,6,2,0,8,null,null,7,4]节点 5 和节点 4 的最近公共祖先是节点 5。因为根据定义最近公共祖先节点可以为节点本身。给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。节点 5 和节点 1 的最近公共祖先是节点3。]]></description><category></category></item><item><title><![CDATA[算法-矩阵置零]]></title><link>https://blog.youkuaiyun.com/m0_61358347/article/details/161723806</link><guid>https://blog.youkuaiyun.com/m0_61358347/article/details/161723806</guid><author>m0_61358347</author><pubDate>Fri, 05 Jun 2026 16:26:05 +0800</pubDate><description><![CDATA[题目暗示我们可以用常量的空间可以解决，但是又需要有额外的空间存储哪些行、哪些列有零。因此我们可以利用矩阵本身的数组，用第一列存储哪些行有零，存储的前提是需要一个标志位标志第一列本身是否有零。，则将其所在行和列的所有元素都设为。的矩阵，如果一个元素为。]]></description><category></category></item><item><title><![CDATA[算法-接雨水]]></title><link>https://blog.youkuaiyun.com/m0_61358347/article/details/161723230</link><guid>https://blog.youkuaiyun.com/m0_61358347/article/details/161723230</guid><author>m0_61358347</author><pubDate>Fri, 05 Jun 2026 16:09:55 +0800</pubDate><description><![CDATA[上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图，在这种情况下，可以接 6 个单位的雨水（蓝色部分表示雨水）。在思考一段时间后，觉得可以去掉栈，但是本人没想到代码实现，但看了一个大佬的下面的代码。的柱子的高度图，计算按此排列的柱子，下雨之后能接多少雨水。利用单调栈分层计算可以接的雨水，个非负整数表示每个宽度为。]]></description><category></category></item><item><title><![CDATA[redis分布式锁实现]]></title><link>https://blog.youkuaiyun.com/m0_61358347/article/details/161722370</link><guid>https://blog.youkuaiyun.com/m0_61358347/article/details/161722370</guid><author>m0_61358347</author><pubDate>Fri, 05 Jun 2026 15:47:06 +0800</pubDate><description><![CDATA[返回值含义nil成功获取锁（首次获取或重入）正数（毫秒）无法获取锁，返回需要等待的时间负数（或0）等待超时或立即失败（由调用方解释）该脚本实现了公平、可重入、带超时的分布式锁，所有操作在 Redis 中原子执行，避免了竞态条件。]]></description><category></category></item><item><title><![CDATA[算法：矩形区域不超过k的数值和]]></title><link>https://blog.youkuaiyun.com/m0_61358347/article/details/154618860</link><guid>https://blog.youkuaiyun.com/m0_61358347/article/details/154618860</guid><author>m0_61358347</author><pubDate>Sun, 09 Nov 2025 22:13:44 +0800</pubDate><description><![CDATA[的数值和是 2，且 2 是不超过 k 的最大数字（k = 2）。，找出并返回矩阵内部矩形区域的不超过。题目数据保证总会存在一个数值和不超过。蓝色边框圈出来的矩形区域。]]></description><category></category></item><item><title><![CDATA[算法：合并石头的最低成本]]></title><link>https://blog.youkuaiyun.com/m0_61358347/article/details/154604869</link><guid>https://blog.youkuaiyun.com/m0_61358347/article/details/154604869</guid><author>m0_61358347</author><pubDate>Sun, 09 Nov 2025 21:39:50 +0800</pubDate><description><![CDATA[返回把所有石头合并成一堆的最低成本。如果无法合并成一堆，返回。合并 [3, 2]，成本为 5，剩下 [5, 4, 1]。合并 [4, 1]，成本为 5，剩下 [5, 5]。合并 [5, 5]，成本为 10，剩下 [10]。堆石头合并为一堆，而这次移动的成本为这。从 [3, 2, 4, 1] 开始。总成本 20，这是可能的最小值。]]></description><category></category></item></channel></rss>