一个整数数组,元素取值范围可能是1~N中的任意一个数,相同数值不会重复出现。设计一个算法,找出数列中符合条件的数对的个数,满足数对中两数的和等于N+1;
代码
#include <stdio.h>
void FixedSum(int* a,int n,int d){
for(int i = 0,j = n-1;i<n&&j>=0&&i<j;){
if(a[i]+a[j]<d)
++i;
else if(a[i]+a[j]>d)
--j;
else if(a[i]+a[j]==d){
printf("%d,%d\n",a[i],a[j]);
++i;
--j;
}
}
}
int main(){
int array[] ={1,2,3,4,5};
int len = sizeof(array)/sizeof(array[0]);
FixedSum(array,len,6); //1,5 2,4
return 0;
}