<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[stormsunshine的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/stormsunshine</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; stormsunshine]]></copyright><item><title><![CDATA[贪心题目：无重叠区间]]></title><link>https://blog.youkuaiyun.com/stormsunshine/article/details/128380414</link><guid>https://blog.youkuaiyun.com/stormsunshine/article/details/128380414</guid><author>stormsunshine</author><pubDate>Fri, 13 Nov 2026 18:00:00 +0800</pubDate><description><![CDATA[根据上述分析，可以得到贪心策略：首先将区间按结束位置升序排序，然后每次在剩余区间中选择结束位置最小的区间保留。该贪心策略可以将保留的区间数量最大化，将移除的区间数量最小化。为了将保留的区间数量最大化，应保留结束位置最小的区间。理由如下：假设保留的区间中，结束位置最小的区间是。在剩余区间无重叠的情况下，计算需要移除的最少区间，等价于计算可以保留的最多区间。之后，保留的区间仍无重叠，且可以保留的区间一定不会更少。，返回使剩余区间互不重叠的需要移除区间的最小数量。表示上一个保留的区间的结束位置，初始时。]]></description><category></category></item><item><title><![CDATA[贪心题目：最长快乐字符串]]></title><link>https://blog.youkuaiyun.com/stormsunshine/article/details/128380395</link><guid>https://blog.youkuaiyun.com/stormsunshine/article/details/128380395</guid><author>stormsunshine</author><pubDate>Thu, 12 Nov 2026 18:00:00 +0800</pubDate><description><![CDATA[上述做法中，当剩余的字母种类大于一种时，如果每种字母的剩余数量相同则每种字母交替出现，如果每种字母的剩余数量不同则会使每种字母的剩余数量接近相同的情况，因此可以将构造结束时的字母剩余数量最小化，得到最长快乐字符串。如果取的不是剩余数量最多的字母，则最后剩余的同一种字符的数量会更多，更容易出现连续三个相同字符，可以构造的快乐字符串长度一定不会超过取剩余数量最多的字母的情况下可以构造的快乐字符串长度。取出优先队列的队首元素，即剩余数量最多的字母和剩余数量，将剩余数量最多的字母记为。拼接到快乐字符串的末尾，将。]]></description><category></category></item><item><title><![CDATA[力扣题陪我走过的光棍节]]></title><link>https://blog.youkuaiyun.com/stormsunshine/article/details/169646701</link><guid>https://blog.youkuaiyun.com/stormsunshine/article/details/169646701</guid><author>stormsunshine</author><pubDate>Wed, 11 Nov 2026 08:30:00 +0800</pubDate><description><![CDATA[这则程序员主题脱口秀，讲述作者单身时光棍节必刷力扣11、1111题，借540题自嘲单身状态；婚后仍保留刷题习惯，加入接亲考算法、与妻子趣聊算法的趣事，传递单身与婚姻各有美好的成长态度。]]></description><category></category></item><item><title><![CDATA[贪心题目：重构 2 行二进制矩阵]]></title><link>https://blog.youkuaiyun.com/stormsunshine/article/details/128380383</link><guid>https://blog.youkuaiyun.com/stormsunshine/article/details/128380383</guid><author>stormsunshine</author><pubDate>Wed, 11 Nov 2026 08:00:00 +0800</pubDate><description><![CDATA[则一定不存在符合要求的矩阵，返回空二维数组。的元素之和，则一定不存在符合要求的矩阵，返回空二维数组。构造矩阵，构造的过程中判断是否存在符合要求的矩阵。如果不存在符合要求的答案，则返回一个空的二维数组。的值，其所在列对应的矩阵中的两行的值相同，只有。之差的产生原因是矩阵同一列的两行的值不同，即。的值所在列对应的矩阵中的两行的值不同。，则当仍存在符合要求的矩阵时，一定存在大于。所在列对应的矩阵中的两行的值不同，遍历。，有最大的可能得到符合要求的矩阵。列交换之后仍符合要求。的矩阵，填入每个元素的时间是。]]></description><category></category></item><item><title><![CDATA[贪心题目：吃苹果的最大数目]]></title><link>https://blog.youkuaiyun.com/stormsunshine/article/details/128380367</link><guid>https://blog.youkuaiyun.com/stormsunshine/article/details/128380367</guid><author>stormsunshine</author><pubDate>Tue, 10 Nov 2026 18:00:00 +0800</pubDate><description><![CDATA[为了降低复杂度，优先队列应存储二元组，每个二元组包含苹果的最后有效期和苹果数目，优先队列的队首二元组包含最近的最后有效期和对应的苹果数目，此时优先队列中的二元组数目最多为长出苹果的天数。根据贪心策略，可以模拟吃苹果的过程，当有剩余的新鲜苹果时，吃最后有效期最近的苹果。为了得到最后有效期最近的苹果，应使用优先队列存储苹果的最后有效期，优先队列的队首元素是最近的最后有效期。理由如下：如果当天不吃苹果，则剩余的新鲜苹果的有效期减少一天，可以吃的苹果数目不变或减少，不可能增加。苹果的情况下可以吃的苹果数目，先吃。]]></description><category></category></item><item><title><![CDATA[贪心题目：可以到达的最远建筑]]></title><link>https://blog.youkuaiyun.com/stormsunshine/article/details/128380354</link><guid>https://blog.youkuaiyun.com/stormsunshine/article/details/128380354</guid><author>stormsunshine</author><pubDate>Mon, 09 Nov 2026 18:00:00 +0800</pubDate><description><![CDATA[为了到达尽可能远的建筑物，在将砖块替换成梯子时，应将高度差最大位置的砖块替换成梯子，此时剩余的砖块数量最多，如果将高度差较小位置的砖块替换成梯子，则剩余的砖块数量较少，能到达的最远建筑物下标不可能更大。开始向后面的建筑物移动，移动过程中维护优先队列存储正高度差，优先队列的队首元素是最大元素，每次遇到正高度差时优先考虑使用砖块，如果砖块数量不够则使用梯子替换最大高度差位置的砖块，直到砖块和梯子都使用完毕时，到达的建筑物即为最远建筑物。如果以最佳方式使用给定的梯子和砖块，返回可以到达的最远建筑物的下标。]]></description><category></category></item><item><title><![CDATA[贪心题目：任务调度器]]></title><link>https://blog.youkuaiyun.com/stormsunshine/article/details/128380338</link><guid>https://blog.youkuaiyun.com/stormsunshine/article/details/128380338</guid><author>stormsunshine</author><pubDate>Fri, 06 Nov 2026 18:00:00 +0800</pubDate><description><![CDATA[且最先执行和最后执行的任务都是出现次数最多的任务种类（可能有多个出现次数最多的任务种类），如果使用更少的时间则一定不满足相同种类的两个任务之间的时间间隔大于等于。当所有任务的种类数较多，不存在空闲时间时，由于出现次数最多的任务种类能确保相同种类的两个任务之间的时间间隔大于等于。根据贪心思想，为了使用最少时间完成所有任务，应优先安排出现次数最多的任务种类，使该种类的两个任务之间的时间间隔为。如果所有任务的种类数较多，则可以在没有空闲时间的情况下安排所有任务并确保相同种类的两个任务之间的时间间隔大于等于。]]></description><category></category></item><item><title><![CDATA[贪心题目：用最少数量的箭引爆气球]]></title><link>https://blog.youkuaiyun.com/stormsunshine/article/details/128380323</link><guid>https://blog.youkuaiyun.com/stormsunshine/article/details/128380323</guid><author>stormsunshine</author><pubDate>Thu, 05 Nov 2026 18:00:00 +0800</pubDate><description><![CDATA[每次射出箭时，都是在尚未引爆的气球中选择结束坐标最小的气球，从该气球的结束坐标处射出箭，该做法可以确保结束坐标最小的气球被引爆，且可以被引爆的气球数最大化。由此可以得出贪心策略：每次在尚未引爆的气球中选择结束坐标最小的气球，从该气球的结束坐标处射出箭，可以用最少数量的箭引爆所有气球。只有当已经射出的箭无法引爆更多的气球时，才射出新的箭，因此每次射出的箭都必不可少，如果减少射出的箭数则一定不能引爆所有气球。个气球，不更新射出的箭的坐标和射出的箭的数量。表示射出的箭的坐标，将第一支箭的坐标设为。]]></description><category></category></item><item><title><![CDATA[贪心题目：和为目标值且不重叠的非空子数组的最大数目]]></title><link>https://blog.youkuaiyun.com/stormsunshine/article/details/128380307</link><guid>https://blog.youkuaiyun.com/stormsunshine/article/details/128380307</guid><author>stormsunshine</author><pubDate>Wed, 04 Nov 2026 18:00:00 +0800</pubDate><description><![CDATA[的子数组长度最小化，哈希表中应存储每个前缀和最后一次出现的下标。的子数组时应将每个子数组的长度最小化。，则选取其中的长度最小的子数组。的非空不重叠子数组的数目最大化，在选取元素和为。且与上一个子数组不重叠的子数组，将子数组数目加。如果有多个以同一个下标结尾的子数组的元素和都是。标题：和为目标值且不重叠的非空子数组的最大数目。的非空不重叠子数组的最大数目，需要计算数组。将上一个子数组的结束下标记为。的子数组，且该子数组与之前的元素和为。开始的后缀中的子数组不一定在以下标。开始的后缀中的子数组一定在以下标。]]></description><category></category></item><item><title><![CDATA[贪心题目：得到目标数组的最少函数调用次数]]></title><link>https://blog.youkuaiyun.com/stormsunshine/article/details/128380292</link><guid>https://blog.youkuaiyun.com/stormsunshine/article/details/128380292</guid><author>stormsunshine</author><pubDate>Tue, 03 Nov 2026 08:00:00 +0800</pubDate><description><![CDATA[的最少函数调用次数，则由于乘法的情况较为复杂，因此需要考虑多种可能的情况。可以考虑反向操作，每次反向操作可以将数组中的一个元素减。的操作只有在所有元素都是偶数的情况下才能执行，计算将。操作，则为了达到同样的效果，需要的操作次数不可能更少。，为了将函数调用次数最小化，应将数组中的所有元素除以。当数组中全部都是偶数时，可以将数组中的一个元素减。操作的次数等于数组中最大元素的二进制表示的位数减。的最少反向操作次数。当数组中存在奇数时，只能将数组中的一个元素减。操作的次数等于数组中所有元素的二进制表示的。]]></description><category></category></item><item><title><![CDATA[贪心题目：和为 K 的最少斐波那契数字数目]]></title><link>https://blog.youkuaiyun.com/stormsunshine/article/details/128380278</link><guid>https://blog.youkuaiyun.com/stormsunshine/article/details/128380278</guid><author>stormsunshine</author><pubDate>Mon, 02 Nov 2026 08:00:00 +0800</pubDate><description><![CDATA[的斐波那契数字的最少数目，按从大到小的顺序遍历列表中的元素。其实不需要使用列表存储斐波那契数字，只需要维护最大的两个斐波那契数字即可，将最大的两个斐波那契数字记为。的斐波那契数字，然后从大到小遍历所有生成的斐波那契数字，对于遍历到的每个斐波那契数字。的斐波那契数字的最少数目，同一个斐波那契数字可以被使用多次。的数目最少的斐波那契数字满足不存在相邻项且不存在重复项，则。的最大斐波那契数字可以使选取的斐波那契数字数目最少。个斐波那契数字，每个斐波那契数字的生成时间是。的斐波那契数字的最少数目时，执行如下操作。]]></description><category></category></item><item><title><![CDATA[万圣糖果公平交换事件阅读理解]]></title><link>https://blog.youkuaiyun.com/stormsunshine/article/details/169066765</link><guid>https://blog.youkuaiyun.com/stormsunshine/article/details/169066765</guid><author>stormsunshine</author><pubDate>Sun, 01 Nov 2026 08:30:00 +0800</pubDate><description><![CDATA[文章《万圣糖果公平交换事件》的阅读理解。]]></description><category></category></item><item><title><![CDATA[万圣糖果公平交换事件]]></title><link>https://blog.youkuaiyun.com/stormsunshine/article/details/169066700</link><guid>https://blog.youkuaiyun.com/stormsunshine/article/details/169066700</guid><author>stormsunshine</author><pubDate>Sun, 01 Nov 2026 08:00:00 +0800</pubDate><description><![CDATA[万圣节后，Alice 与 Bob 清点糖果，发现总数相差 54 颗。两人约定各换一整盒糖果使总数相等，由此引出「差值取半、寻找对应数量糖盒」的解题思路，并因橘猫捣乱、差值奇偶变化而一波三折，最终靠一盒加一颗零糖实现公平交换。]]></description><category></category></item><item><title><![CDATA[贪心题目：最大数]]></title><link>https://blog.youkuaiyun.com/stormsunshine/article/details/128380267</link><guid>https://blog.youkuaiyun.com/stormsunshine/article/details/128380267</guid><author>stormsunshine</author><pubDate>Fri, 30 Oct 2026 18:00:00 +0800</pubDate><description><![CDATA[因此当数组中的所有数拼接成最大数时，数组中的元素一定满足根据两个整数的拼接结果排序的顺序，必要性得到证明。根据两个整数的拼接结果排序的策略为贪心策略，需要证明贪心策略的正确性，即数组中的所有数拼接成最大数的充分必要条件是根据拼接结果排序。为了将给定数组中的非负整数拼接成最大整数，需要从字典序的角度考虑整数的相对顺序。根据两个整数的拼接结果排序，排序之后将所有整数拼接成的整数即为最大的整数。，重新排列每个数的顺序使之组成一个最大的整数，并返回该最大的整数。正确的排序方法是根据两个整数的拼接结果排序。]]></description><category></category></item><item><title><![CDATA[贪心题目：分发糖果]]></title><link>https://blog.youkuaiyun.com/stormsunshine/article/details/128380247</link><guid>https://blog.youkuaiyun.com/stormsunshine/article/details/128380247</guid><author>stormsunshine</author><pubDate>Thu, 29 Oct 2026 18:00:00 +0800</pubDate><description><![CDATA[由于根据贪心策略给每个孩子分发的糖果数满足两个要求且每个孩子得到的糖果数都是满足两个要求的情况下的最小值，因此贪心策略可以得到正确的结果。根据上述分析，每个孩子得到的糖果数是满足两个要求的情况下的最小值，将任何一个孩子得到的糖果数减少都无法满足两个要求。根据贪心策略，为了使分发的糖果数目最少，应在满足两个要求的情况下最小化分发给每个孩子的糖果数目。表示每个孩子得到的糖果数，则应满足以下两个要求。中的元素之和，即为需要给孩子分发的最少糖果数目。中的任意元素减少都无法满足要求。的数组记录每个孩子获得的糖果数。]]></description><category></category></item><item><title><![CDATA[贪心题目：加油站]]></title><link>https://blog.youkuaiyun.com/stormsunshine/article/details/128380225</link><guid>https://blog.youkuaiyun.com/stormsunshine/article/details/128380225</guid><author>stormsunshine</author><pubDate>Wed, 28 Oct 2026 18:00:00 +0800</pubDate><description><![CDATA[个加油站，需要找到可以绕环路行驶一周的出发加油站的编号。，则无论从哪个加油站出发，绕环路行驶一周之后的剩余汽油都是负数，因此不可能绕环路行驶一周，返回。初始时油箱中的汽油是零，如果行驶到一个加油站的剩余汽油是负数，则无法行驶到该加油站。，此时第三段的汽油变化一定是正数，一定可以在第三段找到一个加油站作为起点，在遍历到。，则遍历过程中任意时刻的汽油都是非负数，因此可以绕环路行驶一周。，如果可以绕环路行驶一周，则返回出发时加油站的编号，否则返回。，则一定存在一个加油站作为起点，可以绕环路行驶一周。]]></description><category></category></item><item><title><![CDATA[贪心题目：给定行和列的和求可行矩阵]]></title><link>https://blog.youkuaiyun.com/stormsunshine/article/details/128369641</link><guid>https://blog.youkuaiyun.com/stormsunshine/article/details/128369641</guid><author>stormsunshine</author><pubDate>Tue, 27 Oct 2026 18:00:00 +0800</pubDate><description><![CDATA[为了确保得到符合要求的矩阵，可以将矩阵的每个元素取不超过上界的最大值。换言之，不知道矩阵里的每个元素，但是知道每一行与每一列的和。行元素中每一列的元素之和，可以使用相同的方法依次构造矩阵的每一行。，该矩阵的元素都是非负整数且满足每一行与每一列的和的要求。列的剩余元素之和将是负数，矩阵中将存在负数，不符合要求。行和列的和都满足题目要求，且所有矩阵元素都是非负的。行的所有元素之和是负数，不符合题目的前提。的矩阵，计算矩阵的每一个元素的时间都是。，即待构造的矩阵的所有元素之和小于。的每个元素分别为矩阵的剩余。]]></description><category></category></item><item><title><![CDATA[贪心题目：需要教语言的最少人数]]></title><link>https://blog.youkuaiyun.com/stormsunshine/article/details/128369606</link><guid>https://blog.youkuaiyun.com/stormsunshine/article/details/128369606</guid><author>stormsunshine</author><pubDate>Mon, 26 Oct 2026 18:00:00 +0800</pubDate><description><![CDATA[判断每一对好友是否有共同掌握的语言，使用哈希集合存储存在好友没有共同掌握的语言的用户。对于上述用户，应选择这些用户中的掌握人数最多的语言，把该语言教给未掌握该语言的用户，则可满足上述用户都能掌握同一门语言且教语言的人数最少。如果减少教语言的人数，则一定不能使上述用户都掌握同一种语言，也不能使所有的好友之间可以沟通，因此使用贪心策略可以得到需要教语言的最少人数。对于每种语言统计哈希集合中的未掌握该语言的人数，其中的最少人数即为需要教语言的最少人数。，对于每种语言统计哈希集合中的未掌握该语言的人数的时间是。]]></description><category></category></item><item><title><![CDATA[力扣出题人怕不是把生活抄进去了]]></title><link>https://blog.youkuaiyun.com/stormsunshine/article/details/168312863</link><guid>https://blog.youkuaiyun.com/stormsunshine/article/details/168312863</guid><author>stormsunshine</author><pubDate>Sat, 24 Oct 2026 08:00:00 +0800</pubDate><description><![CDATA[本文以幽默脱口秀形式吐槽力扣题目如何“精准复刻”生活：从学生出勤、作业时间到柠檬水找零、食堂排队，甚至蚂蚁掉木板、山羊拉丁文等离谱设定，无一不映射现实。程序员刷题时恍惚间发现，生活处处是算法题。虽调侃出题人“管太宽”，实则道出刷题背后的共鸣——难题有解，人生却需慢慢过。]]></description><category></category></item><item><title><![CDATA[贪心题目：安排工作以达到最大收益]]></title><link>https://blog.youkuaiyun.com/stormsunshine/article/details/128369597</link><guid>https://blog.youkuaiyun.com/stormsunshine/article/details/128369597</guid><author>stormsunshine</author><pubDate>Fri, 23 Oct 2026 18:00:00 +0800</pubDate><description><![CDATA[由于一个工作可以完成多次，因此给每个工人安排的工作是独立的。根据贪心思想，为了获得最大利润，应将每个工人的收益最大化，因此应给每个工人安排其能完成的收益最大的工作。中包含每种工作难度对应的最大收益，需要对每个工人寻找难度不超过该工人的能力的工作的最大收益。时，表示没有剩余的工作可以分配给工人，或者所有的工人都被分配工作，结束操作，此时即可得到最大利润。返回在把工人分配到工作岗位后，能获得的最大利润。存储每个工作的难度和收益，对于第。，将当前工人的最大收益加到总收益中。，两个数组的下标分别是。]]></description><category></category></item></channel></rss>