自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 收藏
  • 关注

原创 解决leetcode第3791题.给定范围内平衡整数的数目

摘要:本文提出了一个寻找给定范围内平衡整数的问题。平衡整数定义为至少两位且奇数位数字之和等于偶数位数字之和的数。通过设计check_balance_number函数判断数字是否平衡,然后枚举区间内所有数字进行统计。示例显示该方法能正确识别平衡数,如1-100区间找到9个(11-99),120-129区间找到121。程序实现采用字符串转换和切片操作计算各位数字之和,适用于大范围查询。

2025-12-29 08:58:56 282

原创 解决leetcode第3782题交替删除操作后最后剩下的整数

摘要:本文解决了一个关于交替删除操作的算法问题。给定整数n,将1到n的序列进行交替删除操作:先从左向右隔一个删一个,再从右向左隔一个删一个,直到只剩一个数。通过实现operate_to_right()和operate_to_left()函数进行列表切片操作,并交替调用这两个函数完成删除过程。示例展示了n=8、5、1时的操作步骤和最终结果。该算法能处理极大范围的输入(1≤n≤10^15),通过逐步删除和打印中间过程,最终输出剩下的唯一数字。

2025-12-22 09:23:21 347

原创 解决leetcode第3777题使子字符串变交替的最少删除次数

摘要:该问题要求处理包含字符'A'和'B'的字符串s,执行两种查询操作:反转指定字符或计算使子串变为交替字符串所需的最小删除次数。交替字符串要求相邻字符不同。解决方案包括两个函数:get_min_numbers_of_deletions()计算删除次数,result_according_to_the_query()处理查询并返回结果。时间复杂度为O(qn),适用于大规模输入(n,q≤10^5)。示例表明程序能正确响应反转和查询操作。

2025-12-15 16:54:50 750

原创 解决leetcode第3768题.固定长度子数组中的最小逆序对数目

摘要:该问题要求在给定整数数组nums和长度k的情况下,找出所有长度为k的子数组中逆序对数量最小的值。逆序对定义为i<j且nums[i]>nums[j]的下标对。通过分解数组为k长度子数组,计算每个子数组的逆序对数量,最终返回最小值。示例显示当k=3时,子数组[1,2,5]逆序对为0,是最小值。该解法采用暴力统计方法,适用于小规模数据,但时间复杂度较高,对于大规模数据需要优化算法。

2025-12-08 15:06:54 248

原创 解决leetcode第3753题范围内总波动值II

摘要:本文提出计算给定区间内数字波动值总和的方法。波动值定义为数字中峰和谷的总数,其中峰是严格大于相邻数位的数位,谷是严格小于相邻数位的数位。通过将数字转换为字符串并检查每个中间数位是否满足峰或谷条件来实现计算。对于区间[num1, num2]内的每个数字,统计其波动值并累加。示例显示该方法能正确计算不同区间的波动值总和,包括处理边界情况(如数字位数不足3位时波动值为0)。该方法时间复杂度为O(n),适用于大范围的数值区间。

2025-11-24 15:07:10 278

原创 解决leetcode第3748题统计稳定子数组的数目

本文探讨了统计数组中稳定子数组数量的问题。稳定子数组定义为不存在逆序对的连续子数组。通过设计两个核心函数:check_stability_array()判断子数组是否稳定,get_all_stability_sub_array()统计所有稳定子数组数量。主程序处理查询时,提取指定区间的子数组并调用上述函数计算结果。实例分析展示了算法运行过程,如数组[3,7,2,4]在三个查询区间的结果分别为3、2、6个稳定子数组。该解法直观但存在优化空间,特别针对大规模数据时需考虑更高效算法。

2025-11-18 10:09:36 787

原创 解决leetcode第3739题统计主要元素子数组数目II

题目要求统计数组中满足target是主要元素的子数组数目。主要元素指该元素在子数组中出现的次数严格大于子数组长度的一半。解决思路:1)编写函数判断target是否为子数组的主要元素;2)枚举所有可能的子数组进行统计。示例1中nums=[1,2,2,3], target=2,满足条件的子数组有5个。示例3中target未出现,结果为0。通过双重循环遍历所有子数组并验证,最终返回符合要求的子数组数量。

2025-11-11 08:29:19 430

原创 解决leetcode第3734题大于目标字符串的最小字典序回文排列

摘要:本文探讨了如何找到大于目标字符串的最小字典序回文排列问题。通过分析字符串的回文可行性(偶回文、奇回文或不可行),构建所有可能的回文排列,并按字典序排序后,寻找第一个严格大于目标字符串的回文排列。算法包含三个主要步骤:检查回文可行性、构造回文排列集合、比较目标字符串。当不存在符合条件的排列时返回空字符串,并通过多个示例验证了算法的正确性和有效性。该解法适用于长度不超过300的小写字母字符串。

2025-11-04 11:05:18 358

原创 解决leetcode第3729题.统计有序数组中可被K整除的子数组数量

本文提出了一种统计有序数组中可被K整除的子数组数量的算法。通过生成所有连续子数组,计算其元素和,检查是否能被K整除。算法使用生成器函数高效生成子数组,避免重复计算,并筛选出符合条件的"良好子数组"。示例显示,对于输入[1,2,3]和k=3,输出3个良好子数组;对于[2,2,2,2,2,2]和k=6,输出2个。该方法直观但时间复杂度较高,适用于小规模数据。

2025-10-27 16:27:07 333

原创 解决leetcode第3721题最长平衡子数组II

本文探讨了寻找最长平衡子数组的问题,要求子数组中不同偶数和奇数的数量相等。提出的解决方案包括:1)检查数组平衡性的函数;2)枚举所有子数组并验证平衡性的算法。通过示例验证了该方法的有效性,如输入[1,2,3,2,2,4,5,3,7]时输出长度为7的平衡子数组。该解法采用双重循环枚举子数组,时间复杂度较高但能正确解决问题。最后强调选择合适算法的重要性。

2025-10-20 10:21:09 287

原创 解决leetcode第3704题统计和为N的无零数对

题目要求统计和为n的无零整数对数量。无零整数指不含数字0的正整数。解题思路:1.定义函数检查数字是否无零;2.枚举1到n-1的所有数对(a,b),其中b=n-a;3.统计满足a和b都无零的数对数量。示例显示n=2时1对,n=3时2对,n=11时8对。该问题利用Python字符串处理优势,能高效实现无零数检查。测试案例表明算法正确性,如n=10输出9对,n=15输出12对。时间复杂度为O(n)。

2025-10-05 16:36:50 319

原创 解决leetcode第3661题可以被机器人摧毁的最大墙壁数目

这篇算法题解探讨了如何计算固定位置的机器人通过左右发射子弹能摧毁的最大墙壁数量。关键点在于:1)计算每个机器人左右射击范围;2)检查范围内墙壁;3)考虑其他机器人的阻挡影响。通过分步处理射击范围、墙壁位置和阻挡条件,最终求出最优解。文章提供了完整代码示例和三个测试案例,展示了不同情况下的计算逻辑,强调了数据结构处理的重要性。该问题结合了区间计算和条件判断,具有较高的算法复杂度。

2025-09-29 09:16:58 665

原创 解决leetcode第3671.子序列美丽值求和问题

本文提出一个计算数组子序列美丽值之和的算法。给定整数数组,需计算所有严格递增子序列的GCD(最大公约数)值,并按不同GCD值统计子序列数量,最终返回各GCD值与其对应子序列数量的乘积之和。算法通过生成所有子序列、计算GCD、分类统计等步骤实现,并对结果取模处理。示例显示,对数组[1,2,3]计算结果为10,[4,6]结果为12。文中详细描述了子序列生成、GCD计算等核心函数的实现方法,并通过多个测试案例验证了算法的正确性。该算法适用于长度为10^4以内的整数数组,通过系统化的函数设计和数据处理,有效解决了这

2025-09-03 15:15:36 981

原创 同题异构解决leetcode第3646题下一个特殊回文数

摘要:本文探讨了寻找严格大于给定整数n的最小特殊回文数问题。特殊回文数需满足:1)是回文数;2)每个数字k恰好出现k次。初始采用枚举法虽简单但效率低下(如n=10^15时需20分钟)。改进方法基于数字位数规律:偶数位全由偶数组成,奇数位至多含一个奇数。通过构造对应位数的特殊回文数序列,可快速定位最小解。优化后的算法将运行时间从分钟级缩短至秒级,如n=123456789时,0.02秒即可输出23443443。两种方法对比展示了算法优化对效率的提升。

2025-08-21 22:06:56 1061

原创 解决leetcode第3636题查询超过阈值频率最高元素

本文提出了一种解决查询子数组高频元素问题的方法。给定数组nums和查询数组queries,每个查询要求找出子数组中出现次数超过threshold的元素(若频率相同选最小元素)。算法通过analysis_nums函数处理单个查询,统计子数组元素频率并排序,返回符合条件的元素或-1。get_ans函数遍历所有查询并收集结果。示例表明该方法能正确识别高频元素,如[1,1,2,2,1,1]的查询结果[1,-1,2]。时间复杂度主要取决于查询数量和处理每个查询时的元素统计操作。

2025-08-04 13:33:24 375

原创 有趣的24点游戏

本文介绍了一个用编程求解24点游戏的算法实现。该算法通过两种主要模式构造表达式:模式一是逐步运算四个数字,模式二是先两两运算再合并结果。程序首先生成四个数字的所有排列组合,然后构建可能的运算表达式并去重,最后验证哪些表达式结果等于24。文中提供了三个运行示例,展示了算法如何找到有效的解或判断无解的情况。该实现通过系统地枚举所有可能的运算组合,确保了不遗漏任何可能的解法,同时利用Python的eval函数简化了表达式计算过程。

2025-07-29 12:11:48 396

原创 解决leetcode第3614题用特殊操作处理字符串II

题目要求根据给定规则处理字符串s,构建新字符串result,并返回第k个字符。处理规则包括:字母直接添加;'*'删除末尾字符;'#'复制当前字符串;'%'反转字符串。通过逐个字符处理并动态更新result,最终检查k是否合法后返回相应字符或'.'。关键点在于准确实现各操作对result的修改,并注意边界情况处理。

2025-07-17 22:41:32 962

原创 解决leetcode第3588题.找到最大三角形面积

摘要: 该问题要求找出给定平面点集中能构成的最大三角形面积的两倍值,且三角形至少有一条边与x轴或y轴平行。解决步骤包括:1) 筛选所有平行于坐标轴的点对;2) 遍历剩余点与平行点对组合计算三角形面积;3) 记录最大两倍面积值。若无可行的三角形,返回-1。算法通过遍历和几何计算实现,时间复杂度主要取决于平行点对的数量。示例分析表明,当所有点共线或无平行边时返回-1,否则输出最大面积的两倍值。

2025-07-03 16:24:27 695

原创 解决leetcode第3597题分割字符串

题目要求将字符串分割为互不相同的子段。从首位开始逐步扩展当前段,直到该段首次出现时将其加入结果列表,然后从下一字符开始构建新段。使用贪心策略,通过维护已出现段的集合来确保每个新段的唯一性。例如"abbccccd"被分割为["a","b","bc","c","cc","d"]。算法时间复杂度为O(n²),适用于长度不超过10⁵的字符串。关键步骤包括:逐步扩展当前段、检查唯

2025-07-01 12:09:39 890

原创 解决leetcode第3587题最小相邻交换至奇偶交替

摘要: 本文研究将数组通过相邻交换变为奇偶交替排列的最小操作次数。若奇数与偶数个数差超过1则返回-1。算法核心是定位不满足交替的位置进行交换,并处理末尾连续同奇偶的特殊情况(数组反转)。测试案例验证了算法的正确性,如[1,2,3,4,6]需反转后交换2次,而[2,4,6,3]因奇偶数量差为2直接返回-1。通过系统分析与边界条件处理,解决了相邻交换排序的难点。

2025-06-27 11:28:46 654

原创 解决leetcode第3583题统计特殊三元组

摘要:本文研究统计数组中满足特定条件的三元组(i,j,k)数量的问题,其中nums[i]和nums[k]都等于nums[j]*2。提出的解决方案包括:(1)筛选符合条件的偶数元素;(2)记录元素索引位置;(3)验证中间元素位置是否位于前后元素之间。通过构建辅助列表和双重循环计算有效三元组,最终返回总数并对10^9+7取模。多个运行实例验证了算法的正确性,展示了如何有效抽象数据并构造有用信息来解决问题的思路。关键点在于将问题转化为寻找满足索引约束的中间元素。

2025-06-23 11:32:34 534

原创 解决leetcode第3509题.最大化交错和为K的子序列乘积

本文探讨了LeetCode上的一道困难题目"最大化交错和为K的子序列乘积"。该问题要求从给定整数数组中找到满足以下条件的非空子序列:交错和等于k,且元素乘积不超过limit的情况下最大化乘积。文章通过四个函数实现:计算交错和、计算元素乘积、生成所有子序列以及筛选符合条件的最优解。文中给出了多个运行示例,展示了不同输入下的输出结果,并分析了当不存在满足条件子序列时返回-1的情况。最后指出,这类排列组合问题通常需要运用递归方法解决,包括求全排列、子数组、子序列等问题,深入理解这些递归解决方案

2025-05-26 11:32:55 727

原创 解决leetcode第3548题.等和矩阵分割II

本文介绍了一个关于矩阵分割的算法问题,要求判断是否可以通过水平或垂直分割线将矩阵分成两部分,使得两部分的元素和相等,或者最多移除一个单元格后使它们相等,并且保持连通性。文章详细描述了问题的背景、示例、分析思路以及实现方法。通过设计多个辅助函数,如检查连通性、计算矩阵和、按行或列分割矩阵等,最终实现了一个主函数来判断是否存在满足条件的分割方式。文章还提供了多个运行实例,验证了算法的正确性。

2025-05-22 09:57:06 1017

原创 解决leetcode第3539题.魔法序列的数组乘积之和

该问题要求从给定数组nums中找出所有长度为M的魔法序列,并计算这些序列的数组乘积之和。魔法序列的定义是序列中所有元素的二进制表示中1的个数总和为K。由于直接生成所有可能的序列并计算乘积的复杂度较高,问题通过递归和排列组合的方法来解决。首先,生成所有可能的长度为M的序列,然后筛选出满足魔法序列条件的序列,最后计算这些序列的乘积之和,并对结果取模10^9+7。该问题不仅考察了对二进制操作的理解,还涉及排列组合和递归算法的应用,具有一定的难度。

2025-05-19 11:24:03 979

原创 用windows画图软件探究位图容量大小

数据解读:通过实验数据可以看到,当水平像素从1变化到32个像素时,生成图像文件容量都是66字节,并没有随着像素的增加而改变,但从32变到33像素时,图像容量直接增加4个字节,从33变到64像素时,图像容量仍然保持70字节不变,因此猜测,文件不是按字节来保存的,而是按块来保存,一个块是4个字节,如果容量不足4个字节,依然按4个字节来存放,所以1个像素也要占用4个字节,32像素也是占用4个字节,水平像素从1变到32像素,占用4个字节。

2025-05-16 14:14:19 1080

原创 解决leetcode第3537题填充特殊网格

这个问题还是很有趣的,有点找规律的意思,特别是把它变成网格之后,这个规律就很容易观察到了,而且我们解决问题也要利用这个规律。与n-1对应的特殊网格,其实只是与n对应网格的右上象限部分,根据对应位置增加的值,就可以把右下、左下、左上的网格求出,然后再组合出与n对应的网格。

2025-05-07 16:00:52 741

原创 利用全排列通过枚举算法解决leetcode第3533题.判断连接可整除性问题

利用算法解决问题时,循环结构是基本上会使用到的,另外全排列往往是解决问题的关键,这些都正好利用了计算机的特点,擅长做简单的重复性的工作,且乐此不疲。我们的任务就是如何巧妙将复杂问题解析为适合计算机处理的大量重复性的简单工作。

2025-04-29 09:44:37 487

原创 分解问题解决leetcode第3519题---统计逐位非递减的整数

为解决10进制以上的进位制数码不足的问题,我们在处理数码时超过9的数码直接用10进制数描述,比如16进制的数码就分别是0......10、11、12、13、14、15,但这些数码如果组成一个16进制数又难以分辨清楚,所以在转换的时候,我们把各位数码按顺序放在一个列表中,既清楚各位数码的位置,又方便比较大小,可谓是一个很好的处理方法。为此编制了一个函数change_x_b(x,b),其功能是将一个10进制数x转换为b进制数,采用的是除b取余法,将转换得到的各位数码存放在列表result中,最后返回这个列表。

2025-04-17 11:27:26 835

原创 解决leetcode第3510题移除最小数对使数组有序II

第一是将nums数组中所有相邻元素的和s求出,将相邻元素中第一个元素的索引值i与和s构成一个列表,将所有这种列表组成一个新的列表,然后按和与索引值为关键字排序,找出其中和最小且索引值最小的那一对元素的[i,s]返回。[3, 2, 5, 1, 4]中索引值为0的连续两个元素的和5最小。[3, 1, 5, 2, 4]中索引值为0的连续两个元素的和4最小。元素对(3,1)的和最小,为4。[5, 5, 1, 4]中索引值为2的连续两个元素的和5最小。[4, 5, 2, 4]中索引值为2的连续两个元素的和6最小。

2025-04-08 16:52:38 493

原创 化繁为简解决leetcode第1289题下降路径最小和II

所有非零偏移向下路径: [[0, 1, 0], [0, 1, 2], [0, 2, 0], [0, 2, 1], [1, 0, 1], [1, 0, 2], [1, 2, 0], [1, 2, 1], [2, 0, 1], [2, 0, 2], [2, 1, 0], [2, 1, 2]]第三步是在n个元素的索引值列表[0,1,2,......,n-1]中选一个索引值,生成由这个索引值开始的非零偏移下降路径列表,为此设计函数get_one_all(n,i),其中的i表示下降路径的第一个索引值。

2025-04-01 11:36:26 609

原创 解决leetcode第3480题删除一个冲突对后的最大子数组数目

子数组是数组中一个连续的非空元素序列。生成的所有子数组有:[[1], [2], [3], [4], [5], [1, 2], [2, 3], [3, 4], [4, 5], [1, 2, 3], [2, 3, 4], [3, 4, 5], [1, 2, 3, 4], [2, 3, 4, 5], [1, 2, 3, 4, 5]]生成的所有子数组有:[[1], [2], [3], [4], [1, 2], [2, 3], [3, 4], [1, 2, 3], [2, 3, 4], [1, 2, 3, 4]]

2025-03-17 08:40:15 594

原创 解决leetcode第3455题最短匹配子字符串

问题来了,慢慢思考,慢慢改进方法,不沮丧,不气馁,人生也一样,很多时候是慢慢而艰难地磨过来的。

2025-03-13 19:10:17 485

原创 解决Leetcode第3470题全排列IV

这个问题关键是要先把1至n共n个数的全排列找出来,然后根据“任意相邻两个元素不都为奇数或都为偶数”的规则生成交替排列,并按字典序排好序,剩下的输出第k个排列就好办了。给你两个整数n和k,一个交替排列是前n个正整数的排列,且任意相邻两个元素不都为奇数或都为偶数。生成的交替排列中的第3个排列为:[2, 1, 4, 3]生成的交替排列中的第2个排列为:[3, 2, 1]生成的交替排列中没有第3个排列,故输出[]由于k=6,我们返回[3,4,1,2]。[3,4,1,2]←第6个排列。[3,2,1]←第2个排列。

2025-03-06 15:51:23 520

原创 解决leetcode第3441题变成好标题的最少代价

经过处理之后各种情况的操作步数及最终字符串:[[1, 'aaabbbcccc'], [2, 'aaabbbbccc'], [3, 'aaaabbbccc'], [4, 'aaaaaacccc'], [4, 'aaaaaccccc'], [6, 'aaaaaaaccc'], [12, 'aaaaaaaaaa']]在整个编写中,感觉将一个caption分解为各种连续的字符数至少为3个及以上的子字符串的组合,难度比较大,经过反复实验,最终写成,后来自己撇开原来写好的代码,试着重写一遍,居然难以写出。

2025-02-17 11:53:45 915

原创 解决leetcode第3430题最多k个元素的子数组的最值之和

解析出的最多4个元素的子数组: [[3], [-2], [4], [1], [5], [3, -2], [-2, 4], [4, 1], [1, 5], [3, -2, 4], [-2, 4, 1], [4, 1, 5], [3, -2, 4, 1], [-2, 4, 1, 5]]解析出的最多2个元素的子数组: [[1], [2], [3], [4], [1, 2], [2, 3], [3, 4]]解析出的最多2个元素的子数组: [[1], [-3], [1], [1, -3], [-3, 1]]

2025-01-21 16:27:47 967

原创 解决leetcode第3426题所有安放棋子方案的曼哈顿距离

字符串方案转换为坐标列表方案:[[[0,1],[1,1]],[[0,0],[1,0]],[[0,1],[1,0]],[[0,0],[1,1]],[[0,0],[0,1]],[[1,0],[1,1]]]字符串方案转换为坐标列表方案:[[[0,1],[0,2],[0,3]],[[0,0],[0,2],[0,3]],[[0,0],[0,1],[0,3]],[[0,0],[0,1],[0,2]]]

2025-01-20 15:13:47 830

原创 解决leetcode第3418题机器人可以获得的最大金币数

在纸上用不同的网格测试,网格一这样处理确实可以,找到了“右下右下”的路径就是最佳路径,但网格二就不行了,按照先前的策略处理,应该是“右下下右”的路径,金币数为14,但按“下下右右”的路径,获得的金币数反而有15,可见那种每一步向获得金币数最多的方向走的策略是不行的,因而心里不踏实也是有道理的。所有路径列表: ['11122', '11212', '11221', '12112', '12121', '12211', '21112', '21121', '21211', '22111']

2025-01-17 13:46:59 1429

原创 用匠心精神解决LeetCode第726题原子的数量

编程犹如雕刻,雕刻用雕刀雕出精美的艺术品,独具匠心,编程则用编程语言和算法思想对问题抽丝剥茧,可谓匠心独运。要提高技艺,都需要反复练习,或心细如发,或大巧若拙,熟能生巧,方能形成智慧的结晶。

2024-11-20 11:59:38 694

原创 用枚举算法解决LeetCode第3348题最小可整除数位乘积II

其实这个问题还是一个有趣的数字问题,我们发现t=26=2*13,要一个无零数字能够被26整除,说明这个无零数字的各数位之积必须要有一个因子是13,这样才能除尽,否则是永远不能被26整除的,但数位之积是各位数字的乘积,只能是1、2、......、9的乘积,不可能出现13这个因子,所以我们只要对t进行分解质因数,如果t中有大于10的质因数,则直接就可以判断,不存在这样的无零数字,其数位之积能够被t整除,直接输出-1即可。但示例3又说到num="11111",t=26时,没有满足条件的无零数字,要输出-1。

2024-11-14 13:16:33 446

原创 自顶向下逐步求精解决LeetCode第3307题找出第K个字符II题

根据题目的描述,要找到经过数组operations的多次操作之后,所形成字符串中的第K个字符,那么就要知道每一次的操作如何进行,然后利用数组operations中的操作指令,循环操作处理即可得到最后形成的字符串,进而找到问题求解。每一次的操作又根据数组operations中的指令是0还是1有不同的处理处理,其中指令为0的处理较为简单,而指令为1的操作复杂,是对一个字符串中的每个字符取下一个字符进行替换,所以这就转换为对一个字符,如何转换为下一个字符的问题,可以看到出来,这是一个自顶向下,逐步求精的过程。

2024-11-12 12:35:15 724

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除