AC之路 序

不知不觉就要到大三了,也玩过很多东西,但总感觉缺乏新的挑战,到达了一个瓶颈。

于是想要隐居深山,闭关修炼,回到计算机的本源,更多跟深地去死磕自己从前从来没有好好去探索的CS领域,SO HERE I AM,

阅读更多

LeetCode题解:最长回文串之manacher算法

manacher 俗称马拉车算法,也是本文的主角,是一种能够将最长回文串的求解复杂度降低到 O(N) 的一种高效算法,
当我第一次见到求解最长回文串的题目时,首先采用的就是暴力解法,O(N平方) 复杂度遍历所有可能的串,然后再用 O(N) 的时间来求回文串的最大长度,使用 map 存储各个下标对的回文情况尽管能减少一部分计算,
但是显然这种方式时间复杂度过高,部分 case 容易超时

这种算法的大概思路如下:

  • 通过插入一些符号简化奇偶个数和边界对判断回文串的干扰
  • 中心点的整个边界(除去中心点)的一半恰好等于中心点的最大回文串长度
  • 利用大回文串边界内的位置的最大回文串个数以大中心点对称的规律大大简化计算量
阅读更多