Part 6.8:后缀数组 (Suffix Array)——子串问题的强大工具后缀数组(Suffix Array)是处理字符串子串问题的瑞士军刀。它通过对字符串的所有后缀进行排序,将许多看似复杂的子串问题转化为简单的数组操作。配合 LCP(最长公共前缀)数组,后缀数组能够高效解决最长重复子串、不同子串计数、字符串匹配等一系列经典问题。本文将从后缀数组的定义出发,详细讲解倍增算法的构建过程,并通过 Python 代码和实际案例,带你掌握这一强大的字符串工具。 2025-11-20 大学算法全体系 > Part 6:字符串算法 #算法进阶 #字符串 #后缀数组 #Suffix Array #LCP #最长公共前缀
Part 8.1:工程算法优化——从理论到实践的最后一公里掌握了算法理论,并不意味着你能写出高效的生产代码。从理论到实践,存在一条巨大的鸿沟。本文将带你跨越这最后一公里,深入探讨工程中的算法优化:如何利用缓存局部性、如何选择合适的数据结构、如何权衡时间与空间、如何并行化算法,以及那些教科书上不会告诉你的、但在真实世界中至关重要的优化技巧。 2025-11-20 大学算法全体系 > Part 8:工程与面试 #工程优化 #性能调优 #缓存 #并行计算 #实践经验 #算法选择
Part 6.7:AC 自动机——多模式匹配的终极武器AC 自动机(Aho-Corasick Automaton)是字符串匹配领域的一座高峰,它巧妙地融合了 Trie 树和 KMP 算法的精髓,能够在一次扫描中同时匹配多个模式串。无论是敏感词过滤、病毒特征码检测,还是文本挖掘,AC 自动机都是不可或缺的利器。本文将从零开始,带你理解 AC 自动机的构建原理、失配指针的奥秘,以及如何用 Python 实现一个完整的 AC 自动机。 2025-11-19 大学算法全体系 > Part 6:字符串算法 #算法进阶 #字符串 #KMP #Trie #AC自动机 #Aho-Corasick #多模式匹配
Part 7.5:快速傅里叶变换 (FFT)——算法世界的蝶之舞快速傅里叶变换(FFT)被誉为“20世纪最重要的算法之一”。它是一种基于分治思想的、能将特定计算从 O(n²) 奇迹般地优化到 O(n log n) 的算法。从多项式乘法到数字信号处理,从图像压缩到计算金融学,FFT 的身影无处不在。本文将从多项式表示法入手,深入剖析 FFT 的核心——单位复根、蝶形运算,带你领略这一算法世界中最优美的“蝶之舞”。 2025-11-19 大学算法全体系 > Part 7:高级算法 #算法进阶 #分治算法 #FFT #快速傅里叶变换 #多项式 #信号处理
Part 6.6:Trie (字典树)——高效的前缀查询神器Trie 树,又称字典树或前缀树,是处理字符串前缀问题的终极数据结构。它通过将字符串集合的公共前缀进行复用,实现了对词频统计、自动补全、敏感词过滤等场景的极速查询。本文将从 Trie 的节点结构入手,通过图解和 Python 代码,带你一步步实现一个完整的 Trie,并深入探讨其在各类问题中的应用。 2025-11-18 大学算法全体系 > Part 6:字符串算法 #数据结构 #字符串 #Trie #字典树 #前缀树
Part 7.4:数论算法——从质数到密码学的基石数论,这个古老而纯粹的数学分支,在计算机科学中扮演着意想不到的关键角色。从质数判定、最大公约数计算,到现代密码学的基石 RSA 算法,数论无处不在。本文将带你探索计算机科学中的基础数论算法,包括高效的质数筛法、优雅的欧几里得算法和处理大数幂运算的快速幂,为你揭示数字世界背后的深刻秩序。 2025-11-18 大学算法全体系 > Part 7:高级算法 #算法思想 #数论 #质数 #欧几里得算法 #快速幂 #密码学
Hexo 博客功能定制实战:网址导航与音乐播放器配置详解详细记录 Hexo 博客中网址导航页面和音乐播放器的配置过程,包括技术选型、代码实现和优化细节。 2025-11-17 博客搭建 > Hexo 功能扩展 #Hexo #博客搭建 #功能定制 #前端开发
Hello WorldWelcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quick 2025-11-17
Part 6.5:字符串哈希——O(1) 比较子串的利器字符串哈希是一种将任意长度的字符串映射为固定长度整数的强大技术。通过巧妙的滚动哈希(Rabin-Karp 算法核心),它能实现 O(1) 时间复杂度的子串比较,在处理大规模字符串问题时展现出惊人的效率。本文将带你从零开始,深入理解字符串哈希的原理、实现、冲突处理(双哈希),以及在子串搜索、重复子串查找等问题中的经典应用。 2025-11-17 大学算法全体系 > Part 6:字符串算法 #算法基础 #字符串 #字符串哈希 #Rabin-Karp #滚动哈希
Part 7.3:随机化算法——当运气成为一种力量在算法的世界里,我们总是追求确定性和最优性。但如果引入一点“运气”,会发生什么?随机化算法,一种利用概率和随机性来解决问题的强大范式,常常能以更简单的设计和更高的期望效率,攻克确定性算法难以处理的难题。本文将深入剖析随机化算法的两大类型——拉斯维加斯和蒙特卡洛,并通过经典的随机化快速排序案例,带你领略“运气”在算法设计中的惊人力量。 2025-11-17 大学算法全体系 > Part 7:高级算法 #快速排序 #随机化算法 #Randomized Algorithm #概率算法 #蒙特卡洛 #拉斯维加斯
Part 6.4:Manacher 回文算法Manacher 算法是求解最长回文子串问题的终极武器,它巧妙地解决了奇偶长度回文串的差异,并利用回文的对称性实现了线性时间复杂度。本文将从“马拉车”的直观比喻入手,为你深入剖析其核心思想——臂长数组和对称性利用,并通过详尽的图示、动画式案例和 Python 实现,助你彻底掌握这一精妙的字符串算法。 2025-11-16 大学算法全体系 > Part 6:字符串算法 #算法基础 #字符串 #Manacher #回文串 #最长回文子串
Part 7.2:分治算法——帝国的统治智慧与归并排序分治算法,一种源自古罗马统治策略的强大算法思想,是解决复杂问题的利器。本文将深入剖析分治法的三大核心步骤——分解、解决、合并,通过经典的归并排序案例,带你掌握这一优雅且高效的算法设计范式。 2025-11-16 大学算法全体系 > Part 7:高级算法 #递归 #快速排序 #归并排序 #算法思想 #分治算法 #Divide and Conquer