算法学习04:双指针、位运算
文章目录
前言
须要记忆的模版:
// 双指针算法的模版:
//朴素写法:
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
if(check(j, i))
{
res = max(res, i - j + 1);
}
//双指针写法:
for(int i = 0; i < n; i++)
{
while(j <= i && check(j, i)) j++;
res = max(res, i - j + 1);
}
//位运算:
n >> k & 1//判断n的二进制表示中,第k为是不是“1”
//函数:找到最右边的1
int lowbit(int x)
{
return x & -x;
}
//判断n的二进制表示中,有几个“1”?
while(x)
{
x -= lowbit(x);
res ++;
}
提示:以下是本篇文章正文内容:
一、双指针
1.例题1
注意:两个指针在一个序列
2.例题2
二、位运算
1.例题1
注意:从0开始数“第一位”
2.例题2
注意:lowbit操作可以帮助我们找到:一个数的二进制表示中,最右边的那个数。
总结
提示:这里对文章进行总结:
💕💕💕