/*
给定指定递增序列,求序列中两数相加=M的元素组合
*/
#include<stdio.h>
bool hash[10000]={false};
void twopointer(int a[],int N,int M){
int i=0,j=N-1;
while(i<j){
if(a[i]+a[j]==M){
if(hash[a[i]]==false){
hash[a[i]]=true;
printf("%d:%d %d:%d\n",i,a[i],j,a[j]);
}
i++;j--;
}
else if(a[i]+a[j]<M){
i++;
}
else{
j--;
}
}
}
int main(void){
int a[10]={1,2,3,4,4,4,4,5,6,7};
twopointer(a,10,8);
}