算法 之 双指针
这篇文章《双指针技巧汇总》中将双指针分为快慢指针和左右指针,很赞同。以下是练习过程中碰到的一些问题,整理如下:
快慢指针
11. 盛最多水的容器
左右指针
抽象的表达式为:f(x1, x2) = (x2 - x1) * min(f(x1), f(x2))
咋一看,有点懵,因为f(x1,x2)的值有x1,x2,f(x1),f(x2)四个值决定,而且是两个维度。
官方解题思路是:让x2-x1最大,然后移动 min(f(x1), f(x2))对应的x1/x2,以获取更大值的可能。详解看官网解释。
那么,反过来想想,如果x1,x2的距离从小到大变化呢?理论上也是能解决的,但是执行步骤可能会比上面要多一些。