首页 > TAG信息列表 > MaxRight

Manacher(马拉车)算法

It's great to be great, but it's greater to be human.  成为一个伟人很伟大,但是成为一个充满人性的人更伟大。 Manacher算法 Manacher于1975年发现了一种线性时间算法,可以在列出给定字符串中从任意位置开始的所有回文子串。同样的算法也可以在任意位置查找全部极大回文子串,并且

【LeetCode】42.接雨水

题目链接 42. 接雨水 题目描述 解题思路 暴力法(按列求取雨水值) 因为首尾元素不可能存在雨水,所以可以不用考虑首尾元素。 对于剩余的每个元素,分别计算从该元素开始,从左和从右开始开始的最大值,然后当前元素对应的能够接的雨水值 = Math.min(maxLeft,maxRight) - height[i]; 时间复杂

leetcode 5. 最长回文子串 (Manacher's Algorithm)

传统方法:遍历每一个字符,以该字符为中点向两边查找。 问题1: 由于回文串长度的奇偶性,需要对对称轴的位置进行分别判断,这种解法的时间复杂度是O(n^2)。 如aabb对称轴为ab之间,而ababa对称轴为中间的a 需要分别对两种情况进行判断 问题2:子串被重复多次访问,降低了时间效率。 Manacher'

leetcode1299

1 class Solution: 2 def replaceElements(self, arr: List[int]) -> List[int]: 3 n = len(arr) 4 maxright = arr[-1] 5 res = [-1] 6 for i in range(n-2,-1,-1): 7 right = arr[i+1] 8 maxright = max(r