双指针算法和位运算

双指针算法:将时间复杂度从n^2降为n。

双指针算法的模板:

for (int i = 0, j = 0; i < n; i ++ )
{
while (j < i && check(i, j)) j ++ ;

// 具体问题的逻辑
}
常见问题分类:
(1) 对于一个序列,用两个指针维护一段区间
(2) 对于两个序列,维护某种次序,比如归并排序中合并两个有序序列的操作

 

位运算:

模板

求n的第k位数字: n >> k & 1
返回n的最后一位1:lowbit(n) = n & -n

 

负数(用补码加1)相当于正数取反加1.

今天学习了四个算法知识点:双指针算法,位运算,离散化,区间合并,但后面两个算法还有点没搞清楚,今天就介绍前面两个算法把。。。

posted @ 2021-11-03 23:40  天勤也  阅读(30)  评论(0)    收藏  举报