IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:时间复杂度

共 5 篇相关文章

IT 累计浏览 57

GESP 202506 5级真题「奖品兑换」题解

这篇题解讲的是 GESP 2025 年 6 月五级的一道题目“奖品兑换”。题目要求用两种面值的兑换券兑换奖品,求能兑换的最大数量,数据规模高达 10^9,直接暴力枚举肯定超时,而想设计一个万无一失的贪心策略又很困难。 作者的核心解法是“二分答案+判定”。关键思路在于:兑换券数量越多,所需的另一种券就越多,满足单调性,因此可以对最大兑换数进行二分搜索。对于每一个待检验的答案 k,先按“全都用大面值券兑换”的方式计算,如果小面值券超额了,就逐步将部分兑换方案切换为使用小面值券,通过计算需要切换的次数(涉及向上取整)来判断是否在总券数内可行。 整道题综合考查了二分搜索、数学推导(包括向上取整的代码写法)以及对数据范围的敏感度。题目设计有区分度:没想到二分的同学用贪心或暴力也能拿到部分分数,而想出最优解则能全面锻炼算法思维。代码实现时还需要注意用 `long long` 防止溢出。

IT 累计浏览 2,495

你需要更多的思考时间

这篇文章分享了一位技术从业者通过每日安排固定思考时间,来提升工作效率和生活质量的个人实践。作者每天七点半起床,利用通勤的一个半小时用kindle阅读,并提前一小时到公司,但这段时间他并不急于

IT 累计浏览 1,959

B-树

这篇讲的是经典数据结构B-树的核心设计与操作逻辑。文章开篇就点明了B-树与平衡二叉树的关键差异:通过允许节点容纳更多元素(几十到几百个)来大幅降低树的高度,从而在数据无法全部载入内存时,显著减少访问磁盘的次数,提升效率。 作者详细拆解了B-树的严格定义,特别是倾向于使用奇数阶(如2n+1)的统一性,以避免处理偶数阶时可能出现的不平衡情况。随后,文章通过具体的查找和插入示例,生动展示了B-树的工作原理。查找过程强调了其多路搜索的特性,而插入部分的剖析尤为细致,清晰地说明了节点未满、分裂以及元素移动(如将中间元素上提至父节点)等不同情况下的处理逻辑,解释了如何通过分裂和平衡操作来维持所有叶子节点处于同一层的核心性质。 整个讲解围绕着B-树如何保持平衡与高效展开,为其在数据库索引和文件系统等场景中作为底层核心数据结构的重要性,提供了坚实的技术基础。

IT 累计浏览 2,600

尾递归对时间与空间复杂度的影响

这篇讲的是尾递归在实际应用中那些理论之外的复杂性。文章从一位同学的提问出发:是否所有递归算法都能改写为尾递归?改写后,时间和空间复杂度就一定能得到优化吗?以斐波那契数列为例,表面上似乎验证了这一结论。 作者深入剖析后发现,事情并非如此简单。虽然尾递归确实能通过消除调用栈来优化空间复杂度,但其对时间复杂度的提升是有条件的。文章具体展示了,即使将斐波那契递归改写为尾递归形式(借助累加器参数),若仅仅进行机械转换,得到的依然是一个时间复杂度为 O(2^n) 的低效算法,需要进一步结合动态规划思想才能优化到 O(n)。 文章进而探讨了将一般递归转换为尾递归或迭代的通用方法,分析了转换过程中可能遇到的困难与权衡。结论是,尾递归是一个强大的性能优化工具,但它不是将递归问题转化为高效迭代代码的“万能钥匙”。理解其原理与局限,才能在合适的场景下有效运用它。

IT 累计浏览 4,118

求职面试时常被问到的65个问题与技巧性回答

这篇整理了65个技术岗位求职面试中的高频问题,并提供了相应的技巧性回答建议。文章从“请你自我介绍一下你自己”这类基础问题入手,覆盖了个人经历、技术能力、项目经验、团队协作、职业规划等多个维度,几乎囊括了面试官可能抛出的所有考察点。 它的价值不仅在于罗列问题,更在于为每个问题拆解了回答思路。例如,针对自我介绍,它提示要突出与岗位匹配的核心技能和项目成果;而对于情景类或行为类问题,则引导候选人使用STAR法则(情境、任务、行动、结果)来组织答案,让叙述结构清晰、重点突出。这些方法能帮助求职者跳出简单“背答案”的陷阱,转而展示出自己的逻辑思考与解决问题能力。 无论你是准备第一场面试的应届生,还是计划跳槽的资深工程师,这份清单都像一份详细的“面试地图”,帮你系统性地查漏补缺,把可能遇到的提问场景提前演练一遍。