【群视频】笔记 - 2015.06.17

Manacher算法

                        ——最长回文子串

这里写图片描述
在每个串中间加一个特殊字符 ‘#’(随意,什么都行),这样 回文串就无论是奇数个还是偶数个,都一样了

int pArr[i] // 表示 第i个数的那个位置处的回文半径(palindrome Array) int pR =
0; // 表示回文半径能够扫到的最右的那个位置的 下一个位置(palindrome Right)
//从第0个位置开始, pR = i + pArr[i] + 1; int index //回文中心 什么时候更新pR,什么时候记录
//pR和index是同时变化的, index = i;

  • 第1种拓扑
    这里写图片描述

  • 第2种拓扑
    这里写图片描述
    此时 pArr[i] = (pR-1) - i;
    例:
    这里写图片描述

  • 第3种拓扑
    这里写图片描述
    此时 pArr[ i’ ] = **; 左大 = 左小
    例:
    这里写图片描述

  • 第4种拓扑
    暴力扩:
    这里写图片描述

时间复杂度:pR(0~2N)
(空间换时间,通过评价空间的变化来评价时间)

关于时间复杂度的一个 狂抓酷炫吊炸天的公式:

Master Method Restated

这里写图片描述

n/b:下一次进行递归的数据量
a : 这样的递归行为发生的次数
O(n^d):除去递归之外的 复杂度的部分

例:归并排序
这里写图片描述
根据Master公式:
∵ 归并排序的d = log {_b} {^a} = 1
∴ T(n) = n lg(n)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值