让数组恒为奇数
有没有办法让两个数组长度相加一定为奇数或偶数呢?
其实有的,虚拟加入‘#’(这个trick在manacher算法中也有应用),让数组长度恒为奇数(2n+1恒为奇数)。
Ps.注意是虚拟加,其实根本没这一步,因为通过下面的转换,我们可以保证虚拟加后每个元素跟原来的元素一一对应
之前 len 之后 len
[1 4 7 9] 4 [# 1 # 4 # 7 # 9 #] 9
[2 3 5] 3 [# 2 # 3 # 5 #] 7
映射关系
这有什么好处呢,为什么这么加?因为这么加完之后,每个位置可以通过/2得到原来元素的位置。
/ 原位置 新位置 除2后
0 1 0 1
5 2 5 2
---------------------
作者:Vosky
来源:CSDN
原文:https://blog.csdn.net/hk2291976/article/details/51107778