two pointers思想
two pointers常见于一些算法编程中,现对该思想进行总结归纳。例如求一个递增数列a[1,2,3,4,5,6]中两相异数的和为8的组合。
分析如下,首先设置两个指针i和j分别指向队首和队尾。
跟据此分析将算法归结为代码
#include <cstdio>
int main(){
int a[6] = {1,2,3,4,5,6};
int i = 0, j = 5;
while (i < j){
if(a[i] + a[j] == 8){
printf("%d %d\n",a[i],a[j]);
i++;
j--;
} else if(a[i] + a[j] < 8)i++;
else j--;
}
return 0;
}
结果为
2 6
3 5