实现
for(int i=0, j=0; i<a&&j<b; i++){
while(j<i&&check(i,j)) j++;
//题目逻辑
}
应用
双指针本质是一个利用数组单调性的优化算法,能将原本O(n*m)
的复杂度降为O(n+m)
节省时间
注意:
1.利用双指针,首先要确认数组单调性,单调性就是指我们在访问数组时,不会重复访问前面已经访问过的数据。简单的暴搜对于这种问题就会全部访问。遇到类似的题,没有思路时,可以先写出暴搜解,观察可优化的地方,如果有上述情况,就可以用
2.双指针的题,有单个数组,也有两个数组的。对于一个数组,有两个指针都从前往后的类型,也有从两边向中间逼近的问题,本质上都是利用单调性对数组进行压缩,进行优化。对于两个数组的,每个数组一个指针,利用特性进行压缩。