- 博客(13)
- 收藏
- 关注
原创 算法优化卡壳?3 个实战案例带你突破 O (n²) 瓶颈
算法优化实战:3个案例突破O(n²)瓶颈 针对开发者常见的性能卡顿问题,本文通过三个典型场景展示优化思路和实现方案: 两数之和:从暴力遍历O(n²)到哈希表O(n)优化,利用空间换时间,减少重复计算 字符串匹配:KMP算法通过前缀表预处理,将O(n*m)优化为O(n+m),避免无效回退 斐波那契数列:从递归O(2ⁿ)到动态规划O(n),再通过滚动数组压缩空间至O(1) 核心优化方法论: 空间换时间(哈希表) 预处理(KMP前缀表) 状态压缩(滚动数组) 文中每个案例均包含代码对比、复杂度分析和避坑指南,可直
2025-09-17 13:46:48
939
原创 算法优化进阶:从理论到实战的完整落地指南
本文系统介绍算法优化从理论到实战的完整流程。首先讲解如何利用Chrome DevTools、Lighthouse等工具定位性能瓶颈,将主观感受转化为量化指标。接着通过两大进阶场景:任务调度(堆优化实现O(nlogn))和LRU缓存(哈希表+双向链表实现O(1)),深入剖析优化思路与方法。最后提供优化决策指南,包括数据规模评估、复杂度分析和时空权衡策略,并给出实战代码优化案例。文章强调建立"发现问题→分析瓶颈→选择工具→验证效果"的系统化思维流程,帮助开发者构建完整的算法优化知识体系。
2025-09-17 13:45:00
872
原创 最小生成树:Prim 与 Kruskal 算法
本文介绍了最小生成树(MST)问题的两种经典算法:Prim和Kruskal。Prim算法采用贪心策略,从顶点出发逐步扩展生成树,时间复杂度为O((V+E)logV),适合稠密图;Kruskal算法通过排序边并查集实现,复杂度O(ElogE),适用于稀疏图。二者均能求解连通加权无向图的权值最小生成树,在电缆铺设、网络设计等领域有重要应用,选择取决于图的密度和具体需求。
2025-07-12 19:17:48
226
原创 最短路径算法:Dijkstra 与 Floyd-Warshall
本文比较了两种最短路径算法:Dijkstra算法采用贪心策略,适用于非负权图,时间复杂度为O((V+E)logV);Floyd-Warshall算法使用动态规划,能处理所有顶点对的最短路径(含负权),时间复杂度O(V³)。文中给出了两种算法的C++实现代码,并对比了它们的复杂度及应用场景:Dijkstra常用于GPS导航,Floyd-Warshall适合网络路由。
2025-07-12 19:16:44
210
原创 图论基础:概念、表示与遍历
摘要:本文介绍了图论的基础知识,包括图的定义、分类(有向/无向、加权/无权)和表示方法(邻接矩阵、邻接表)。通过C++代码示例展示了邻接表实现和广度优先搜索(BFS)算法。图论在网络分析、社交网络和路径规划等领域有广泛应用。文章提供了简洁的技术要点和实用代码片段,适合作为图论学习的入门参考。
2025-07-12 19:14:09
462
原创 树(一篇通)
本文介绍了树和二叉树的基本概念与性质。主要内容包括:1)树的递归定义、基本术语(节点度、层次、深度等)和分类;2)二叉树的特殊性质(如第i层最多2^(i-1)个节点)和遍历方式(前序、中序、后序、层次遍历);3)两种特殊二叉树——满二叉树和完全二叉树的定义;4)二叉树遍历的代码实现。文章系统梳理了树形结构的基础知识,为数据结构学习提供了清晰的理论框架。
2025-07-12 19:01:29
914
原创 舞会之谜:上司缺席下的快乐最大化(没有上司的舞会题解)
本文介绍了树形DP解决"没有上司的舞会"问题。题目要求选择若干职员参加舞会,其中直接上司和下属不能同时出席,目标是最大化快乐指数总和。通过分析得出状态转移方程:f[u][1]表示选择u节点时的最大快乐值(需加上子节点不选的值),f[u][0]表示不选u节点时的最大快乐值(取子节点选或不选的最大值)。代码使用邻接表建树,从根节点(无上司的节点)开始递归遍历,最终输出根节点两种状态的最大值。时间复杂度为O(n)。
2025-07-10 12:16:15
393
原创 慢生活:数字时代的治愈之道
《数字时代的慢生活指南》 在信息爆炸的今天,人们陷入注意力的困境:平均专注时间仅8秒,比金鱼更短暂。我们被碎片化信息裹挟,却失去了深度思考的能力。慢生活哲学建议:重新定义效率,每周留出无屏幕时间专注简单活动,反而能激发创造力。实践方法包括设定设备禁用时段、整理手机应用、培养线下爱好等。在这个快节奏时代,主动选择减速不是倒退,而是与科技和谐共处的智慧。真正的意义不在于接收多少信息,而在于消化体验的深度。
2025-07-10 11:58:36
340
原创 Where Am I?(字符串)
每个邮箱的颜色用 A..Z 之间的一个字母来指定,所以沿着道路的 N 个邮箱的序列可以用一个长为 N 的由字母 A..Z 组成的字符串来表示。Farmer John 想要知道最小的 K 的值,使得他查看任意连续 K 个邮箱序列,他都可以唯一确定这一序列在道路上的位置。然而,每个农场都沿路设有一个彩色的邮箱,所以 Farmer John 希望能够通过查看最近的几个邮箱的颜色来唯一确定他所在的位置。最小可行的 K 的值为 K=4,因为如果他查看任意连续 4 个邮箱,这一颜色序列可以唯一确定他在道路上的位置。
2024-01-24 19:32:45
1529
原创 字符串变换
有一个由英文小写字母组成的字符串S,小明想要按照如下规则,替换掉一些单词和字母。如果遇到字母i,就替换成数字1。如果遇到连续的2个字母"to",就替换成数字2。如果遇到连续的3个字母"for",就替换成数字4。如果遇到不属于to或for的字母o,就替换成数字0。输出替换后的字符串。
2024-01-24 19:19:27
834
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
2