算法
文章平均质量分 95
m0_38063172
这个作者很懒,什么都没留下…
展开
-
Manacher算法详解
算法简介 Manacher算法是一种用来求给定字符串的最大回文子串长度的算法。它相对于简单的中心扩展算法的优势在于不用从头开始扩展,也就是说计算以索引值为i的字符为中心的回文子串的长度时,不必从i-1和i+1开始比较,而是可以利用回文子串本身的一些性质,从离位置i更远的两头开始扩展,减少计算量。下面我们具体地看一下这个算法。 算法过程 我们目前只考虑所有位置的最大回文子串的长度是奇数的情况,偶数的...原创 2020-03-15 23:07:32 · 273 阅读 · 0 评论 -
python中的super函数及MRO
super() 函数是用于调用父类(超类)的一个方法。 super是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。 MRO就是类的方法解析顺序表, 其实也就是继承父类方法时的顺序表。 调用父类(超类)方法的两种方式:...原创 2018-08-31 18:35:07 · 6007 阅读 · 10 评论 -
对递归的进一步理解
这周看了一道求数组排列的题目,解法用了递归,看懂之后自己对递归的理解更深了。 递归的定义 递归是指程序调用自身,但调用时必须改变调用参数,直到某个参数满足退出条件。函数调用的过程会用到run-time stack,递归时栈中的内容有相似性,但是每一层的差异最终会导致运行栈增长的停止,并且从栈顶返回。 理解递归,最终还是要归结到理解函数调用过程中运行栈的增长和退出。 run-time stack...原创 2019-05-19 12:30:47 · 214 阅读 · 0 评论