- 博客(154)
- 收藏
- 关注
原创 C++ 栈 模拟 力扣 844. 比较含退格的字符串 题解 每日一题
本文聚焦力扣844题“比较含退格的字符串”,该题是栈在“撤销/回退类场景”的经典应用,延续并拓展了“字符串模拟栈”的核心技巧。文章先阐述题目背景与解题价值,强调其对问题转化、工具复用思维的强化作用;再详解算法原理,核心是通过栈模拟文本编辑器退格处理逻辑——普通字符入栈、退格字符弹栈(非空时),预处理后比较两字符串最终形态;随后给出简洁高效的C++实现,含代码解读与复杂度分析(时间O(n+m)、空间O(n+m)),并补充空间优化思路;最后总结栈思维的适用场景与解题技巧,为后续“表达式计算”等进阶题目铺垫,助力
2025-12-04 19:07:32
889
2
原创 C++ 栈 模拟 1047. 删除字符串中的所有相邻重复项 题解 每日一题
本文围绕力扣1047题“删除字符串中的所有相邻重复项”展开,核心讲解栈在相邻元素消除问题中的应用。首先分析题目特征,点明其对栈“后进先出”特性的精准适配,帮助读者建立“相邻匹配/抵消问题优先用栈”的思维。随后复习栈的构造、常用接口及适用场景,再通过栈的原始实现与字符串模拟栈的优化版本对比,阐述算法原理与优化思路。优化后的字符串版代码更简洁,时间和空间复杂度的常数因子更优。最后总结核心收获,强调栈的本质应用与优化思维,并预告后续相关习题,助力读者深化对栈数据结构的理解与实践。
2025-12-02 18:50:42
732
2
原创 C++ 高精度计算的讲解 模拟 力扣67.二进制求和 题解 每日一题
本文围绕高精度运算展开,指出C++原生类型存数范围与精度不足的问题,介绍高精度通过字符串/数组存数字每一位、模拟手算的核心思路。以力扣67题二进制求和为模板,详解加减乘类运算逻辑,单独拆解大数除法原理,提供对应C++代码实现,并附力扣练习题及下题预告。
2025-11-29 19:54:02
1051
2
原创 C++ 双指针 动态规划 力扣 5. 最长回文子串 每日一题 题解
本文用图解+实战代码深度拆解 LeetCode 5「最长回文子串」。先对比暴力/中心扩展/区间 DP 三种写法,给出可投产版 C++ 源码;再复盘长度计算、填表顺序、边界 case 四大易错点;最后补充面试反杀追问与 Manacher 优化路径,助你 10 分钟彻底吃透回文串,从容应对笔试与工程场景。
2025-11-25 20:13:13
941
原创 C++ 字符串 模拟 力扣 14. 最长公共前缀 每日一题 题解
本文围绕LeetCode 14“最长公共前缀”这一字符串经典入门题展开,解析其作为面试高频题的核心价值——夯实模拟思维、边界处理与代码优化能力。文章详细阐述横向遍历(两两对比)与纵向遍历(逐位验证)两种核心算法原理,提供完整可运行的C++代码,拆解关键细节与易错点,并进行复杂度分析。同时总结解题核心考点、思路迁移方向及常见错误,帮助读者不仅掌握本题解法,更能提升字符串处理能力,为后续复杂题型奠定基础,兼具入门指导与面试备考价值。
2025-11-23 18:01:04
785
1
原创 C++ 哈希表 容器组合应用 力扣 49. 字母异位词分组 每日一题 题解
本文聚焦力扣经典哈希表题目 “字母异位词分组”,系统解析解题思路与实现。该题是面试高频题,核心考察哈希表键值设计与泛式容器运用。文章先阐明题目价值与考察重点,再以 “找到异位词统一标识” 为突破口,详解 “排序 + 哈希表” 核心算法,给出完整 C++ 代码。同时剖析代码易错点、复杂度,补充计数法等优化思路与对比。内容兼顾基础与进阶,助力读者夯实容器使用能力,掌握哈希分组核心逻辑,实现解题思路迁移。
2025-11-20 18:07:18
1026
2
原创 C++ 哈希表 力扣 面试题 01.02. 判定是否互为字符重排 每日一题 题解
本文围绕力扣面试题 01.02 判定字符重排展开,该题是哈希表在字符频率统计场景的经典入门题,核心考察问题转化与数据结构选型能力。文章先明确题目要求——判断两字符串是否字符种类和数量一致仅排列不同,再分析暴力枚举全排列(O(n!)时间复杂度)的低效性,重点讲解最优的哈希频率统计思路:先通过长度不等快速排除无效情况,再用26位数组(对应小写字母)一次遍历增减抵消两字符串字符频率,最终检查数组是否全为0(O(n)时间、O(1)空间)。同时解读代码实现、复杂度及避坑点,对比两种算法差异,帮助巩固“用哈希表统计频率
2025-11-18 17:33:24
878
2
原创 C++ 哈希表 常用接口总结 力扣 1. 两数之和 每日一题 题解
本文围绕力扣经典入门题“两数之和”,系统讲解哈希表的应用逻辑。先介绍哈希表的本质、核心价值与使用场景,详解C++中unordered_map和unordered_set的常用接口,再针对题目展开算法分析——对比暴力枚举(O(n²)复杂度)与哈希表优化方案(O(n)复杂度),拆解“问题转化(两数和→单目标查找)”“键值设计(数值-下标映射)”“先查后插避重”等关键思路,给出完整代码实现与复杂度分析,点明容器使用误区与面试考点,帮助读者掌握“空间换时间”核心思维,为后续哈希表类题目打下基础。
2025-11-16 18:02:00
805
2
原创 C++ 面试高频考点 链表 迭代 递归 力扣 25. K 个一组翻转链表 每日一题 题解
本文深度拆解“K个一组翻转链表”这一链表进阶核心题,涵盖题目价值、算法原理、递归与迭代双实现及避坑指南。核心原理配合头插法翻转、组间衔接的动态GIF图,直观呈现指针变化过程,帮你快速攻克指针操作难点,两种实现的对比表更便于复习复盘。
2025-11-13 21:25:10
1014
1
原创 C++ 面试高频考点 链表 优先级队列 递归 力扣 23. 合并 K 个升序链表
本文聚焦力扣 23 题 “合并 K 个升序链表”,该题是面试高频考点,核心考察链表操作、算法优化等能力。文章先分析题目价值,随后详解三种解法:暴力解法通过迭代合并两链表实现,时间复杂度 O (nk²);优先级队列(小顶堆)借助堆筛选最小值节点,时间复杂度 O (nk log k);分治归并基于归并排序思想,拆分后合并子链表,时间复杂度同为 O (nk log k) 且空间更优。还对比各解法优劣、强调边界处理等避坑点,并给出思想迁移方向,最后预告下一道链表进阶难题,助力读者全面掌握相关考点。
2025-11-11 23:05:01
1077
1
原创 C++ 面试高频题 链表 模拟 力扣 143. 重排链表 题解 每日一题
本文聚焦力扣 143. 重排链表这道面试高频 “黄金综合题”,解析其将链表找中点、反转、合并三大核心操作整合的特性。题目要求将链表 L0→L1→…→Ln 重排为 L0→Ln→L1→Ln-1→…,且需实际交换节点而非修改值。核心思路是拆解问题:用快慢双指针定位中点,分割出前后半段;逆序后半段链表;再将前半段与逆序后的后半段交叉合并。文章详细拆解各步骤原理、配示意图与代码实现,补充边界处理、内存释放等面试关注细节,同时强化复杂问题拆解思维,助力读者夯实链表功底、适配面试考察需求。
2025-11-08 21:44:22
937
2
原创 C++ 链表 模拟 递归 迭代 力扣 24. 两两交换链表中的节点 题解 每日一题
本文围绕力扣 24 题 “两两交换链表中的节点” 展开,该题作为面试高频题,能强化多指针操作、递归与迭代转换及边界处理能力。文章详解两种解法:递归法通过拆解子问题,先处理后续链表再交换当前节点,明确终止条件与结果连接逻辑;迭代法借助虚拟头节点和多指针,循环处理每组节点交换,重点规避空指针问题。还分析了两种解法的时间与空间复杂度,总结核心技巧与面试注意事项,帮助读者扎实掌握链表操作,为解决复杂链表问题奠定基础。
2025-11-06 21:24:42
806
3
原创 C++ 算法题中链表的操作技巧总结 链表 模拟 力扣 2. 两数相加 题解 每日一题
本文围绕力扣 “两数相加” 链表题展开,先总结链表解题常用技巧,包括画图梳理思路、引入虚拟头节点、灵活定义节点及快慢双指针法。接着解析题目核心,即利用链表逆序存储特点模拟加法运算,重点处理进位和不同长度链表的遍历问题。通过对比繁琐与简洁两种代码实现,展现如何通过统一逻辑优化代码,并分析时间与空间复杂度。最后总结核心思路与关键技巧,强调题目对掌握链表操作的基础作用,同时预告后续 “两两交换链表中的节点” 题目解析。
2025-11-04 20:16:24
1034
3
原创 C++ 分治 归并排序解决问题 力扣 493. 反转对 题解 每日一题
本文聚焦力扣 493 题 “反转对”,核心讲解如何用归并排序优化解法,将暴力 O (n²) 复杂度降至 O (nlogn)。问题本质是寻找满足 i<j 且 nums [i]>2nums [j] 的数对,采用分治思想将反转对拆分为左子数组内部、右子数组内部及跨数组三类。关键创新在于拆分 “计数” 与 “排序” 阶段,利用子数组有序性,通过单向移动指针高效统计跨数组反转对,同时注意用 long long 避免 2nums [j] 的整数溢出问题。文章还对比了降序和升序两种排序计数思路,帮助读者深化对归并排序分治
2025-11-03 18:30:41
1070
2
原创 C++ 分治 归并排序解决问题 力扣 315. 计算右侧小于当前元素的个数 题解 每日一题
本文围绕力扣 315 题 “计算右侧小于当前元素的个数” 展开,核心讲解如何利用归并排序结合 “值 - 索引” 双数组同步排序的技巧解题。文章先分析题目价值,指出其对深化分治思想、掌握状态跟踪技巧的意义;接着阐述算法原理,重点说明将问题从 “全局计数” 转化为 “按原始位置计数” 的思路,以及通过降序排序、双数组绑定原始索引实现统计的核心逻辑;然后给出完整代码实现,解析关键细节;最后分析时间和空间复杂度,并总结思路迁移价值,为后续类似题目铺垫基础。
2025-11-01 20:29:08
1087
1
原创 C++ 分治 归并排序解决问题 力扣 LCR 170. 交易逆序对的总数 题解 每日一题
该博客聚焦力扣 LCR 170 交易逆序对问题,先阐明题目要求统计前高后低的股价对,指出暴力 O (n²) 解法超时局限。接着详解用归并排序解决的核心逻辑:将逆序对拆分为左子数组内部、右子数组内部、跨数组三类,利用归并 “拆分 - 合并” 特性,在合并有序子数组时高效统计跨数组逆序对,同时论证子数组排序不影响计数准确性。给出全局复用临时数组的优化代码,分析时间复杂度 O (nlogn)、空间复杂度 O (n),还提及该 “排序 + 统计” 思路的迁移价值,并预告后续 315 题讲解,为读者搭建从算法原理到实
2025-10-30 21:15:57
801
3
原创 C++ 分治 归并排序 归并排序VS快速排序 力扣 912. 排序数组 题解 每日一题
该文围绕力扣 912 题 “排序数组”,以归并排序为核心展开二刷解析。先说明二刷价值,即通过归并排序补充快排未覆盖的知识点,建立场景适配能力、拓宽算法优化思路并铺垫后续学习基础。接着阐述归并排序 “先拆分、再合并” 的原理,对比其与快排在分治顺序、遍历顺序等维度的差异。然后提供两种代码实现方案,分析临时数组复用策略及效率,还进行了时间和空间复杂度分析。最后总结归并排序要点,并预告下道相关题目。
2025-10-28 23:09:33
624
3
原创 C++ 分治 快速排序优化 三指针快排 力扣 面试题 17.14. 最小K个数 题解 每日一题
该文围绕力扣 “最小 K 个数” 问题展开,先点明题目核心是找出数组中最小的 k 个数,强调其学习价值,能打破全排序思维定式、衔接快速选择实战应用并覆盖工程边界场景。接着对比全排序法、堆选择法、计数排序法和快速选择法的逻辑、复杂度、优劣势及适用场景,指出快速选择法是通用最优解。随后详解快速选择法原理,给出 C++ 代码实现,分析函数无返回值的原因及优先选该方法的理由,还提示避坑要点,最后预告下一篇将讲解归并排序相关题目。
2025-10-26 20:37:04
882
1
原创 C++ 分治 快速选择算法 堆排序 TopK问题 力扣 215. 数组中的第K个最大元素 题解 每日一题
该文以 1024 程序员节为引,聚焦力扣 215 题 “数组中的第 K 个最大元素”。先点明题目价值,其为 Top K 问题经典代表,能深化算法思维、助于权衡解法及贴合工程场景。接着详解两种 O (n) 级核心算法:快速选择算法(基于三指针快排,通过区间划分与递归聚焦目标区间实现剪枝)与堆选择算法(用最小堆维护前 K 大元素),给出对应 C++ 代码,对比两者时空复杂度与适用场景,最后总结算法选择优先级、思维迁移方向及避坑指南,并预告下一道相关题目。
2025-10-24 19:55:45
1357
3
原创 C++ 分治 快速排序优化 三指针快排 力扣 912. 排序数组 题解 每日一题
本文围绕力扣 912 题 “排序数组” 展开,题目要求不依赖内置函数、以 O (nlogn) 时间复杂度和最小空间复杂度完成升序排序。常规快排在重复元素或有序数组场景下易超时,故引入三指针优化,将数组划分为 “小于、等于、大于” 基准值三区间,中间等值区间直接落位,避免无效递归。同时通过随机选基准值,进一步保障性能稳定。文中提供二路快排(参考)与三指针快排代码,分析时间复杂度(平均 O (nlogn))与空间复杂度(平均 O (logn))
2025-10-22 17:50:52
669
2
原创 C++ 分治 快排铺垫 三指针 力扣 75.颜色分类 题解 每日一题
该文围绕力扣 “颜色分类” 题展开,先点明题目要求原地排序含 0、1、2 的数组,再说明弄懂此题对面试提分、算法思维进阶等有重要意义。核心讲解三指针分治最优解,定义 left、i、right 指针划分区间,分析不同元素处理逻辑及细节,还给出计数统计、单指针两种解法的思路与代码。通过时间和空间复杂度对比凸显三指针法优势,最后总结解法选择、核心思维与易错点,并预告下道排序题。
2025-10-21 20:26:52
1095
4
原创 C++ 模拟题 力扣 1419. 数青蛙 题解 每日一题
该文围绕力扣 1419 “数青蛙” 题展开,先明确题目要求:判断蛙鸣字符串是否有效,有效则返回最少青蛙数,无效返回 - 1。核心是跟踪青蛙叫声阶段与复用,解析指出题目考察状态跟踪、多实现思路等,还提及隐蔽踩坑点。算法原理分三步,定义阶段与跟踪、处理字符流转状态、验证有效性。提供简单版和通用版两种代码实现,对比二者优缺与复杂度,最后总结模拟算法核心逻辑、技巧与避坑点,并预告下一题 “荷兰国旗问题”。
2025-10-20 09:53:51
896
2
原创 C++ 面试基础考点 模拟题 力扣 38. 外观数列 题解 每日一题
本文围绕力扣 “外观数列” 题展开,先明确题目核心是 “后项对前项进行行程长度编码”,如 countAndSay (4) 由 countAndSay (3)“21” 描述为 “1211”。解析指出该题是面试高频题,可考察基础能力、思维灵活性,还能帮规避编程错误、实现举一反三。算法上,先以双指针法实现单字符串描述,再通过递归(自顶向下,思路直白但有栈开销)或迭代(自底向上,无栈开销更高效)从 1 推导到 n。最后给出两种实现代码,对比其优缺点与复杂度,总结解题核心,并预告下一题 “数青蛙”。
2025-10-18 17:58:44
936
2
原创 C++ 模拟题 力扣 6. Z字形变换 题解 每日一题
该文围绕力扣 “Z 字形变换” 题展开,先明确题目核心是按 “Z” 路径排列字符串后逐行读取结果,而非实际绘图。分析其价值在于培养 “模拟转规律” 思维、处理典型边界条件及直观体现复杂度优化。先介绍模拟法思路及空间浪费、效率低的问题,再重点推导规律,得出周期 d=2*(numRows-1),第一行和最后一行字符位置为 “起始位置 + kd”,中间行为 “k+d 和 kd -k”。基于规律给出 C++ 代码实现,分析时间复杂度 O (n)、空间复杂度 O (n),最后总结核心思路与边界处理要点,并预告下一题
2025-10-15 16:39:43
989
1
原创 定长内存池 思考实现过程 C++ 附源码
本文介绍了内存池的概念、定长内存池的设计实现及性能测试。内存池通过预分配大块内存自主管理,解决直接调用系统接口的效率低和碎片问题。定长内存池以模板类实现,优先分配回收的内存块,处理内存对齐和初始化,测试显示其在高频场景性能远超传统new/delete,提升约80%,适用于特定场景,也指出其适用边界及其他内存池方向。
2025-10-14 23:07:19
706
2
原创 C++ 模拟题 力扣495. 提莫攻击 题解 每日一题
该题解围绕“提莫攻击致艾希中毒”问题展开,先明确题目核心是计算重叠中毒区间总时长,指出其作为“区间重叠简化题”的练习价值,可培养场景转逻辑、边界处理能力。原理上通过比较相邻攻击间隔与中毒时长,分“不重叠(加完整时长)”“重叠(加间隔时长)”两类计算,强调最后一次攻击必加完整时长的边界点。代码实现采用O(n)时间、O(1)空间的线性遍历,兼顾简洁与高效,还补充遍历范围、特殊情况处理等细节。最后总结通用解题步骤,并预告同类“Z字形变换”题,引导举一反三。
2025-10-12 16:50:02
977
2
原创 C++ 模拟 力扣1576. 替换所有的问号 题解 每日一题
本文围绕模拟算法展开,先阐释其本质 —— 算法界的 “按图索骥”,思路易想但需注重代码落地,强调其是复杂算法的基础。接着给出模拟题解题思路,即把题目要求转化为清晰步骤,避免直接写代码导致卡壳。随后以力扣 1576. 替换所有的问号为例,说明该题作为模拟题模板的价值,覆盖常规逻辑与边界处理。解析算法原理,分一般情况和问号在开头 / 结尾的边界情况,还指出代码实现细节,如无需用哈希表,通过简单条件判断即可确定可用字母。
2025-10-10 13:15:53
817
2
原创 C++ 位运算 高频面试考点 力扣 面试题 17.19. 消失的两个数字 题解 每日一题
本文围绕力扣面试题 17.19 “消失的两个数字” 展开,先说明题目要求在 O (N) 时间、O (1) 空间内找出 1 到 N 中缺失的两个数,强调其是位运算经典组合题,融合 “丢失的数字” 与 “只出现一次的数字 Ⅲ” 逻辑,是面试高频考点。接着阐述算法原理,利用异或 “x^x=0”“0^x=x” 特性,先得两缺失数异或结果,再找结果最低为 1 的位拆分集合,最后分别异或两组得缺失数。还提供基础与优化版代码,对比优化点,分析其他解法优劣势,给出面试避坑指南,最后总结位运算题解题关键,文末预告下一题学习内
2025-10-08 20:25:52
948
1
原创 C++ 位运算 高频面试考点 力扣137. 只出现一次的数字 II 题解 每日一题
# 力扣137.只出现一次的数字II解析摘要本文围绕力扣137题展开,该题要求在整数数组中找出仅出现一次、其余元素均出现三次的元素,且需满足线性时间与常数空间复杂度。首先阐述题目价值,其是位运算经典题,能助理解二进制拆解问题与时空权衡,还可迁移至同类场景。接着详解两种解法:位运算通过统计二进制每一位1的总数,取余3确定目标位值,实现O(n)时间、O(1)空间的最优解;哈希表利用键值映射统计次数,虽逻辑直观但空间复杂度O(n)。最后对比方法,回顾知识点,并预告下一题及前置思考,为后续学习铺垫。
2025-10-07 19:17:30
799
2
原创 C++ 位运算 高频面试考点 力扣 371. 两整数之和 题解 每日一题
**文章摘要:** 本文深入解析力扣经典题《两整数之和》,在不使用 `+` 和 `-` 运算符的限制下,利用位运算模拟二进制加法过程。通过异或实现无进位相加,与运算加左移处理进位,循环直至无进位为止。重点讲解为何需用 `unsigned int` 避免负数进位时的符号位扩展问题,揭示该解法与计算机底层全加器电路的高度一致性。文章对比了数组下标、递归等低效替代方案,强调掌握位运算模拟算术运算的核心价值,适用于面试高频考点。最后提出乘法替代思考题,并预告下期内容《只出现一次的数字 II》。
2025-09-30 17:44:16
1055
2
原创 C++ 位运算 高频面试考点 力扣 268. 丢失的数字 题解 每日一题
本文解析力扣 268 题 “丢失的数字”,该题要求找出 [0,n] 范围内未出现在含 n 个元素数组中的数,是体现算法优化思维的经典题。文章介绍五种解法:暴力遍历(O (n²),仅适用于极小数组)、哈希表(O (n) 时间,O (n) 空间,空间换时间)、排序 + 查找(O (n logn) 时间,O (logn) 空间,时空折中)、高斯求和(O (n) 时间,O (1) 空间,需处理溢出)、异或运算(最优,O (n) 时间,O (1) 空间,无溢出)。
2025-09-28 18:12:35
946
2
原创 C++ 位运算 高频面试考点 力扣 01.01 判断字符是否唯一 题解 每日一题
本文解析面试高频题 “判断字符是否唯一”,聚焦从基础到最优的解法演进。题目限定字符串含小写字母,核心考察重复检测逻辑与优化能力。文中对比暴力遍历(O (n²))、排序 + 相邻判断(O (n logn))、哈希表、数组模拟哈希及位运算五种解法,重点拆解数组模拟哈希(26 位布尔数组映射字符)与位运算(32 位整数作位图,无额外结构)两种核心方案,详解字符映射、位运算操作等关键技巧,强调利用题目限制实现空间优化的思路,为面试提供清晰的解法选择与考点梳理。
2025-09-26 18:16:19
1099
4
原创 位运算 常见方法总结 算法练习 C++
本文系统梳理位运算知识,从基础语法切入,详解左移/右移、按位与/或/异或的规则与示例,补充优先级关系及实用括号规范;再聚焦核心操作,拆解“判断/修改二进制第x位”“提取/清除最右侧1”的实现逻辑,结合补码原理让lowbit等操作告别死记。文中还深入位图思想,对比传统哈希表凸显其空间优势,附代码实现演示“添加/删除/判重”操作;同时总结异或运算律及无临时变量交换等应用,搭配LeetCode题目表,关联知识点与解题思路。最后归纳左移溢出、右移符号位混淆等误区,助力读者从入门到实战,高效掌握位运算。
2025-09-23 18:07:05
781
2
原创 C++ 前缀和 高频面试考点 实用技巧 力扣 1314.矩阵区域和 题解 每日一题 降低时间复杂度
本文围绕力扣 1314. 矩阵区域和展开,先解读题目 —— 给定 m×n 矩阵与整数 k,需求每个位置 (i,j) 周边 k 步内元素和(越界则裁剪边界)。分析暴力解法(O ((m×n)²))低效后,重点讲解二维前缀和优化方案:定义 1-based 前缀和矩阵 dp,推导预处理公式与邻域和公式,结合代码实现关键步骤,标注下标转换、边界裁剪等细节。还说明题目价值,如作为前缀和收官题、贴近面试场景,最后预告后续位运算学习内容,帮助读者高效掌握矩阵区域和求解逻辑与优化思维。
2025-09-20 20:20:16
694
3
原创 C++ 前缀和 高频笔试考点 实用技巧 力扣 525.连续数组 题解 每日一题
本文针对力扣 525. 连续数组问题展开解析,该题是 “前缀和 + 哈希表” 思想的经典应用,与 “和为 K 的子数组” 等题逻辑相通但侧重求最长子数组长度。解题关键是将数组中 0 替换为 - 1,把原问题转化为 “找和为 0 的最长连续子数组”。通过前缀和性质可知,若子数组和为 0,则对应两个前缀和相等。哈希表存储前缀和首次出现的下标,遍历数组时计算当前前缀和,若已存在则算子数组长度并更新最大值,否则存入哈希表。还需注意初始化默认前缀和等细节,最终算法时间复杂度 O (n)、空间复杂度 O (n),并预告
2025-09-19 15:39:10
1097
2
原创 C++ 前缀和 高频笔试考点 实用技巧 力扣 974. 和可被 K 整除的子数组 题解 每日一题
本文解析力扣 974 题 “和可被 K 整除的子数组”,先分析 O (N²) 暴力解法的超时问题,再结合同余定理将 “子数组和整除” 转化为 “前缀和余数匹配”,补充负数取余修正方法。核心讲解 “前缀和 + 哈希表” 最优解法,详解哈希表初始化、更新时机等易踩坑细节,用滚动变量优化空间,还提示该思路可迁移至同类子数组题,最后建议通过手动模拟简单示例加深理解。
2025-09-14 18:19:02
1188
2
原创 C++ 前缀积 高频笔试考点 实用技巧 力扣 238.除自身以外数组的乘积 题解 每日一题
本文解析力扣 238 题,先指出 “总乘积 ÷ 当前元素” 思路的缺陷,如遇 0 失效、违反进阶要求。接着说明用 “前缀积 + 后缀积” 的合理性,定义前缀积数组 f [i](i 左侧元素积)、后缀积数组 g [i](i 右侧元素积),推导递推公式,分析边界处理逻辑。给出基础版(双辅助数组,O (n) 空间)与进阶版(复用结果数组 + 变量,O (1) 额外空间)代码及复杂度,总结关键细节,最后预告下题 “和可被 K 整除的子数组”。
2025-09-11 18:47:21
1081
1
原创 C++ 前缀和 高频笔试考点 实用技巧 力扣 724.寻找数组的中心下标 题解 每日一题
本文解析力扣 724 题,先介绍题目(找数组中心下标,使左右元素和相等,无则返 - 1),指出其为前缀和入门题的价值。先分析暴力解法(遍历下标算左右和)的 O (n²) 复杂度局限,再说明前缀和适用原因。接着详解两种前缀和实现方法(含当前下标的前缀和数组、不含当前下标的前后缀和数组)的原理、逻辑及代码,最后总结复杂度等细节,并预告下一道进阶题。
2025-09-10 17:45:31
904
1
原创 C++ 前缀和 高频笔试考点 实用技巧 牛客 DP35 二维模板 题解 每日一题 降低时间复杂度
本文围绕 DP35 二维前缀和模板题展开,先解读题目(求矩阵指定矩形区域和),对比暴力解法(O (q×n×m) 易超时)与前缀和解法。详解二维前缀和原理:定义 1-based 前缀和矩阵 dp,推导 dp [i][j] 预处理公式与矩形区域和查询公式,给出 C++ 实现(含快速 IO、long long 防溢出),总复杂度 O (n×m+q),还总结关键细节,助读者掌握该高频算法模板。
2025-09-09 10:02:51
1021
1
原创 C++ 前缀和 高频笔试考点 实用技巧 牛客 DP34 [模板] 前缀和 题解 每日一题
本文围绕牛客 DP34 前缀和模板题展开,从 “为什么学前缀和” 切入,结合 “每日零花钱记账” 的生活场景,通俗解释前缀和的定义与核心逻辑 —— 通过构建前缀和数组实现 “O (n) 预处理、O (1) 查区间和”,解决暴力解法在 1e5 级数据下的超时问题。文中详细拆解前缀和数组的构建方法、区间和计算公式,对比暴力解法与前缀和解法的效率差异,并深入分析 dp [0]=0 的设计意义、long long 防溢出、输入输出优化等关键细节,还关联动态规划的 “状态转移思想”,为进阶学习铺垫。结尾衔接二维前缀和
2025-09-07 20:44:39
1041
4
wallpaper 壁纸提取工具 导入壁纸编辑器工具 内附视频讲解
2025-07-21
编程开发 C++ 学习 日期类 完整实现 练习项目
2025-07-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅