算法-双指针

366 阅读1分钟

双指针法(快慢指针法)

「通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。」

删除过程如下:

640.gif

「双指针法(快慢指针法)在数组和链表的操作中是非常常见的,很多考察数组和链表操作的面试题,都使用双指针法。」 双指针法将时间复杂度O(n^2)的解法优化为 O(n)的解法。也就是降一个数量级。

滑动窗口

所谓滑动窗口,「就是不断的调节子序列的起始位置和终止位置,从而得出我们要想的结果」。

例如:s=7, 数组是 2,3,1,2,4,3,最后找到 4,3 是最短距离。来看一下查找的过程:

640.gif

其实从动画中可以发现滑动窗口也可以理解为双指针法的一种!只不过这种解法更像是一个窗口的移动,所以叫做滑动窗口更适合一些。