- 博客(3)
- 收藏
- 关注
原创 【无标题】
题目一 窗口的概念:左边界L右边界R,有两项原则1. R和L都可以向右移动不能往左 2. L永远不能超过R的前提下移动。 在窗口内,可以通过遍历的方式找出窗口内的最大值。但这样代价过于繁重了,为了避免这样的代价,在窗口内按从大到小顺序存放数组的下标。每次右边界移动时从尾部进入一个数,插入对应的下标。左边界移动时,弹出对应的下标。 实际中,我们可以建立一个数据结构,每次弹出下标时,只看这下标是不是头部,不是不用管,是则弹出头部。对于一个尾部进入元素,将值小于这个下标对应值的元素全部弹出。因为逻辑上,这些数字
2022-01-31 15:58:08 452
原创 12.Manacher算法逻辑
字符串str中,最长回文字串的长度如何用O(n)复杂度求解 首先,可以以字符串的一个字符为中心,向着左右两侧去比较,相同则长度变化并向两边移动一位,不同停止,这样对字符串每个字符操作,得到回文半径数组。但这样的做法会有一个问题,偶数长度的回文无法被记录。 在字符串的首尾加一个特殊字符’#’(特殊字符可以选任意字符),同时每两个字符之间加一个特殊字符,称这些特殊字符为虚串,这样在字符串的比较中可以避开实串与虚串字符的比较,同时兼顾长度为偶数的情况,这样得到的回文半径数组,可以包含两种情况。 具体操作细化和优化
2022-01-31 15:53:45 544
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人