赞
踩
O(n^2)
一般用来优化暴力穷举,时间复杂度O(n)
常用场景:快慢指针,左右指针以及滑动窗口[left,right]
有起始和终止条件,有递归关系用递归很好解
时间复杂度:O(m+n)
s1="ABCDEF" //主串
S2="ABAA" //模式串
最大公共前后缀长度表
A | B | A | A |
---|---|---|---|
0 | 0 | 1 | 1 |
最大公共前后缀长度表计算
失配时,模式串向右移动的位数为:已匹配字符数 - 失配字符的上一位字符所对应的最大长度值
next数组的话
next 数组的值是除当前字符外(注意不包括当前字符)的公共前后缀最长长度
等价于最大公共前后缀长度表往右移动一位,首位为-1
A | B | A | A |
---|---|---|---|
-1 | 0 | 0 | 1 |
存相同的数据类型,有索引
查找O(1)
插入和删除 O(n)
int[][] array = new int[][]{{1,2,3}};
int[][] array = new int{{1,2,3}};
实质就是不可变(final)的char数组
key-value 键值对 哈希函数
解决哈希冲突 (链地址法)
先进先出的结构,front 队首指针,rear 队尾下标
先进后出的结构,push,pop,peek方法
KMP
即声明一个长度比原数组大一的preSum数组存sum[i0]+…+sum[ij] ,第一个索引值为0,二维数组则是增加一列第一列值为0
这样在计算总和时用这个preSum数组时间复杂度O(n)
两个相同的数字进行异或操作得到0
a^a=0;
交换两个数字 (一个数异或同一个数两次还是那个数)
int a=10;b=30;
a=a^b;
b=a^b;
a=a^b;
相同的数字进行异或操作得到0
a^a=0;
待更新…
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。