双指针算法

双指针算法

双指针算法是一个优化算法

什么是双指针

双指针就是用两个指针相向或相对地遍历,用来维护某种性质

为什么要用双指针

双指针的主要目的是优化

比如一道题的做法如下

for (int i = 0; i < n; i ++ )
{
    for (int j = 0; j < n; j ++ )
    {
        // 具体逻辑
    }
}

这是一种暴力的做法,复杂度为 \(O(n^2)\) ,如果这道题中有某种单调性,则可以用双指针算法来优化成 \(O(n)\)

怎么用(模板)

for (int i = 0, j = 0; i < n; i ++ ) // j不一定是0
{
    while (j < i && check(i, j)) j ++ ;
    
    // 具体逻辑
}
posted @ 2022-05-05 19:01  张詠然  阅读(23)  评论(0)    收藏  举报