题目:输入一个已经按照升序排序过得数组和一个数字,在数组中查找两个数,使得他们的和正好是输入的那个数字
要求时间复杂度是O(n),如果有多对数字的和等于输入的数字,输出任意一对即可。
例如输入数组 1,2,4,7,11,15和数字15
由于4+11 = 15,因此输出4和11
#include<stdio.h>
void find2Number(int a[], int n, int dest) {
int *f = a;
int *e = a+n-1;
int sum = *f + *e;
while(sum!=dest && f<e) {
if(sum<dest) sum = *(++f)+*e;
else sum = *f+*(--e);
}
if(sum == dest)
printf("%d,%d\n",*f,*e);
}
int main() {
int a[] = {1,2,4,7,11,15};
find2Number(a,6,15);
}