基础算法(三)

一.双指针 

双指针算法有很多应用,如之前归并排序中,将两个数组合并时就使用过,这种情况下,两个指针分别指向两个序列

基础算法(三)_第1张图片

事实上,在更多情况下,双指针算法在使用时同时指向一个序列,如快速排序.

基础算法(三)_第2张图片

基本模板

for(int i=0,j=0;i

 核心思想

双指针利于优化; 遍历一个序列时,如果使用ij双重循环,时间复杂度是O(n^2) 使用双指针时,每个指针在序列中的移动次数不超过n,两个指针不超过 2n,时间复杂度是O(n)

二.位运算

 取二进制的后数第k位数  N>>k&1 

lowbit(x) 返回x的最后一位1 x&-x   (-x = ~x + 1)

 

你可能感兴趣的:(算法,数据结构)