算法
文章平均质量分 67
ttkqwe
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
2026-01-22-LeetCode刷题笔记-3507-移除最小数对使数组有序I
每轮遍历既能判断是否有序,也能确定最小相邻对。该实现为直接模拟,便于理解,但在数据规模大时会偏慢。算法学习LeetCode贪心每轮遍历既能判断是否有序,也能确定最小相邻对。该实现为直接模拟,便于理解,但在数据规模大时会偏慢。原创 2026-01-22 23:01:18 · 354 阅读 · 0 评论 -
2026-01-22-牛客每日一题-二进制不同位数
用异或能直接锁定不同位。位计数法比逐位扫描更简洁高效。原创 2026-01-22 22:58:41 · 325 阅读 · 0 评论 -
2026-01-21-牛客每日一题-静态区间和(前缀和)
静态区间和用前缀和是最直接且高效的模板解法。注意区间下标从 1 开始时,pre 的边界处理。原创 2026-01-21 23:12:19 · 952 阅读 · 0 评论 -
2026-01-20-牛客每日一题-小红删数字
结果只和个位相关,状态压缩到 10 个值即可。右向左推导能避免重复计算,直接统计所有结果分布。原创 2026-01-20 21:56:58 · 244 阅读 · 0 评论 -
2026-01-20-LeetCode刷题笔记-3314-构造最小位运算数组I
关键在于“最右侧第一个 0 会被置 1”,因此结果以连续 1 结尾。可以用位运算快速定位要翻转的那一位。原创 2026-01-20 21:31:12 · 239 阅读 · 0 评论 -
2026-01-19-LeetCode刷题笔记-1292-元素和小于等于阈值的正方形的最大边长
二维前缀和是处理子矩阵和的基础工具。当前实现是“能扩就扩”,若需更优可考虑二分边长。原创 2026-01-20 00:14:38 · 426 阅读 · 0 评论 -
2026-01-19-牛客每日一题-阅读理解
构建倒排索引可以把多次查询降到均摊 O(1)。同一篇文章内去重是关键,否则会输出重复编号。原创 2026-01-19 23:48:25 · 427 阅读 · 0 评论 -
2026-01-18-LeetCode刷题笔记-1895-最大的幻方
幻方判定可拆为“行列与对角线和相等”,前缀和大幅减少重复计算。先枚举更大的边长能尽早返回,避免无意义的细粒度搜索。原创 2026-01-19 00:27:38 · 418 阅读 · 0 评论 -
2026-01-18-牛客每日一题-护花使者
这类题常见于“最小化加权等待”的排序模型,关键在于相对顺序的交换论证。处理比值排序时建议用交叉相乘规避精度问题。原创 2026-01-19 00:15:26 · 543 阅读 · 0 评论 -
2026-01-17-LeetCode刷题笔记-3047-求交集区域内的最大正方形面积
交集矩形的最大正方形边长由短边决定,先算交集再取最小值即可。枚举矩形对即可覆盖全局最优,注意side > 0才是有效交集。原创 2026-01-18 00:01:43 · 229 阅读 · 0 评论 -
2026-01-12-LeetCode刷题笔记-1266-访问所有点的最小时间.md
允许对角移动时,两点最短步数就是切比雪夫距离。题目结构简单,重点是观察到“同时走 x 与 y”能省步数。原创 2026-01-12 18:32:36 · 382 阅读 · 0 评论 -
2025-12-04-牛客刷题笔记-25_12-4-质数统计
题目要求统计给定区间内的质数数量。通过欧拉筛预处理1到10^6范围内的质数,并构建前缀和数组,可以高效回答多组查询。每次查询只需用前缀和数组相减即可得到结果,时间复杂度为O(N+Q),其中N是预处理范围,Q是查询次数。这种方法避免了重复计算,显著提高了效率。原创 2025-12-04 09:51:12 · 937 阅读 · 0 评论 -
2025-12-03-LeetCode刷题笔记-3625-统计梯形的数目-II
摘要:LeetCode 3625题要求统计给定点集中能组成梯形的四点组合数。梯形定义为至少有一对平行边的凸四边形。解题思路包括:1)枚举所有线段并计算斜率和截距;2)统计平行线对数量,计算梯形总数;3)通过线段中点识别平行四边形,消除重复计数。使用嵌套字典或Counter统计线段信息,时间复杂度O(N²)。关键点在于将几何问题转化为代数计数,并处理浮点数精度问题。代码展示了两种实现方案,均利用容斥原理和Python的collections模块高效统计。原创 2025-12-04 09:50:32 · 677 阅读 · 0 评论 -
2025-12-04-LeetCode刷题笔记-2211-统计道路上的碰撞次数
这道题目要求统计道路上车辆碰撞的总次数。通过分析碰撞规则,可以发现: 最左侧连续向左行驶的车辆(L)和最右侧连续向右行驶的车辆(R)永远不会发生碰撞 中间部分的任何移动车辆(L或R)最终都会与静止车辆(S)或其他方向车辆相撞 每次碰撞会使移动车辆变为静止状态 解题思路: 先"修剪"掉字符串开头所有的L和结尾所有的R 然后统计中间部分非S车辆的数量,每个非S车辆都会贡献一次碰撞 时间复杂度O(n),空间复杂度O(1)。该问题通过识别边界条件简化了模拟过程,转化为简单的计数问题。原创 2025-12-04 09:49:47 · 616 阅读 · 0 评论 -
2025-11-27-LeetCode刷题笔记-3381-长度可被K整除的子数组的最大元素和
摘要: LeetCode 3381题要求找出长度能被k整除的子数组的最大和。解题关键在于结合前缀和与模运算技巧:通过计算前缀和数组,按位置模k分类,维护每类余数的最小前缀和。这样可以在O(n)时间内计算每个位置结尾的子数组最大和,只需一次遍历即可得到结果。算法空间复杂度为O(k)。提供了Python、Go和C++的实现代码,并讨论了负数处理等边界情况。核心思路是利用同余性质优化计算,避免暴力枚举。原创 2025-12-04 09:49:16 · 446 阅读 · 0 评论 -
2025-11-19-算法分析与设计实验5_贪心法
本文实验报告针对贪心算法与动态规划进行对比研究,主要内容包括:1)通过0-1背包问题对比两种算法,动态规划得到最优解20(选择物品3、4),贪心算法仅得19(选择物品4、2、1);2)实现活动安排问题的贪心解法;3)分析贪心算法的局限性,如在0-1背包问题中可能无法获得最优解。实验结果表明动态规划能保证最优解但复杂度较高,而贪心算法效率更高但适用范围有限。原创 2025-11-19 20:55:24 · 463 阅读 · 0 评论 -
2025-11-18-LeetCode刷题笔记-717-1比特与2比特字符
题目要求判断给定的0/1数组最后一个0是否独立为1比特字符。通过贪心算法从左到右扫描数组,当遇到1时跳过2位,0时跳过1位,最终检查是否落在最后一位即可。时间复杂度O(n),空间复杂度O(1)。另可通过统计末尾连续1的奇偶性快速判断。测试用例验证了算法的正确性,保证最后一位为0简化了边界处理。原创 2025-11-18 16:26:54 · 274 阅读 · 0 评论 -
2025-11-17-LeetCode刷题笔记-1437-是否所有1都至少相隔k个元素
该题目要求判断数组中所有1之间的间隔是否至少为k。算法采用一次遍历,记录上一个1的位置last1,当遇到新1时检查其间隔是否满足要求。时间复杂度O(n),空间复杂度O(1)。核心技巧是将last1初始化为足够小值避免边界判断,适用于基础数组遍历问题。原创 2025-11-17 15:42:30 · 373 阅读 · 0 评论 -
2025-02-23-abc394
摘要:本文记录了Atcoder abc394比赛的5道题目解决方案。A题筛选字符串中的数字2;B题对字符串数组按长度排序;C题处理字符串中的WA替换为AC;D题验证括号序列是否匹配;E题使用BFS计算矩阵中各点对的最短回文路径。代码均采用C++实现,涵盖了字符串处理、排序、栈操作和广度优先搜索等算法。原创 2025-06-28 11:17:13 · 299 阅读 · 0 评论 -
2025-05-07-二分查找
本文总结了二分查找算法的要点和使用场景,对比了两种区间定义方法(闭区间和左闭右开)的实现差异。通过LeetCode 704题展示了两种解法代码,并扩展到35题(搜索插入位置)和34题(查找元素边界)的应用。此外,还介绍了x的平方根(69题)的多种解法:二分法、牛顿迭代法、快速平方根算法(0x5f3759df)、位运算和数学公式法。强调在二分查找中明确区间定义的重要性,以及根据不同问题特性选择最优解法。原创 2025-06-12 10:34:29 · 426 阅读 · 0 评论 -
2025-03-15-位运算
位运算是一种基于整数二进制表示的运算方式。由于计算机内部以二进制形式存储数据,位运算的速度非常快,通常比普通算术运算更高效。原创 2025-06-10 20:28:21 · 704 阅读 · 0 评论 -
快慢指针:链表问题的利器
快慢指针是一种非常实用的链表问题解决技巧,通过合理使用快慢指针,可以高效地解决多种链表问题。掌握快慢指针的使用方法和常见应用场景,将有助于你在算法面试和实际开发中更好地应对链表相关问题。希望本文对你的学习和工作有所帮助。原创 2025-01-14 21:12:07 · 616 阅读 · 0 评论 -
LeetCode 2270: 分割数组的方案数
LeetCode 2270: 分割数组的方案数是一个典型的前缀和问题,通过一次遍历和逐步更新状态,我们可以高效地解决问题。掌握前缀和、双指针和一次遍历等技巧,对于解决类似问题非常有帮助。希望这篇文章能帮助你更好地理解这个问题的解法和相关知识点。原创 2025-01-13 23:10:43 · 635 阅读 · 0 评论 -
LeetCode 2275: 按位与结果大于零的最长组合题解
利用了按位与运算的特性通过逆向思维简化问题展示了如何高效处理二进制位的统计问题掌握这类问题对于理解计算机底层运算和优化算法都有很大帮助。原创 2025-01-12 23:46:06 · 470 阅读 · 0 评论 -
c/cpp语言高精度乘法与高精度加法
Python 的高层抽象和动态类型特性使得高精度运算变得简单,而 C++ 则需要更多的底层实现细节。希望这篇文章能够帮助你理解高精度运算的基本原理和实现方法。原创 2024-11-03 11:49:45 · 677 阅读 · 0 评论
分享