编程语言
首页 > 编程语言> > 算法-双指针 快慢指针

算法-双指针 快慢指针

作者:互联网

双指针:

不同的状态,导致不同指针的移动。最终的状态由于两个指针的位置决定。

 

经典题目:

1. 盛最多水的容器

问题抽象,容量:

min(l, r) * t。

容量取决于最小的一块木板,并且和木板之间的距离有关。

另双指针在容器的各自最远端。双指针开始向内移动,最大的容量必定在向内移动的过程中产生。

因为向内移动必定减小t,此时向内移动的最优方向必定以去掉较小的一块木板决定。

因此往min(l, r)方向移动一次。

时间复杂度O(N)

 

2. 所有三数之和或者两数之和。

问题在于找到**所有**符合的元素。

如果只找一个,哈希表可以O(n)。

找到所有,先排序O(nlogn),再双指针O(n)。

三数之和的时间复杂度为O(n*n)

 

标签:快慢,木板,min,三数,复杂度,算法,移动,指针
来源: https://www.cnblogs.com/simpleminds/p/15203750.html