题目描述
这是一道某互联网公司的面试题,输入为一个以按升序排序好的数组和一个数字n,要求在数组中查找两个数,使得他们的和正好等于那个输入数字n。如果有多对数字的和等于n,输出任意一对即可。
朴素解法
使用两个变量i和j,利用两层循环遍历数组,当遇到data[i]+data[j]等于输入数字,并且i不等于j的时候,输出data[i]和data[j],即找到了所求的两个数字。下面是这种解法的代码:
void find1(int *data,int num)
{
assert(NULL!=data);
int i=0;
int j=0;
for(i=0;i<len;i++)
for(j=0;j<len;j++)
{
if((i!=j)&&((data[i]+data[j])==num))
{
printf(" %d + %d = %d \n",data[i],data[j],num);
return;
}
}
printf(" not find them \n");
return;
}