和为s的两个数字。
输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。
代码思路清晰:
bool FindNumbersWithSum(int data[],int length,int sum,int* num1,int* num2)
{
bool found=false;
if(length<1||num1==nullptr||num2==nullptr)
return found;
int ahead=length-1;
int behind=0;
while(ahead>behind)
{
long long curSum=data[ahead]+data[behind];
if(curSum==sum)
{
*num1=data[behind];
*num2=data[ahead];
found=true;
break;
}
else if(curSum>sum)
ahead--;
else
behind++;
}
return found;
}