#include<stdio.h>
#include "OJ.h"
/*
功能: 输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。如果有多对数字的和等于输入的数字,输出任意一对即可。
输入: int aData[] // 升序数组
unsigned int uiLength // 数组元素个数
int sum, // 给定两个数组的和
输出: int *pNum1 // 第一个数字,对应数组索引小的
int *pNum2 // 第二个数字,对应数组索引大的
返回: 找到返回true,异常返回false
*/
bool FindTwoNumbersWithSum(int aData[], unsigned int uiLength, int sum, int *pNum1, int *pNum2)
{
/*在这里实现功能*/
if (NULL == aData || 2 > uiLength)
{
return false;
}
int uiBegin = 0;
int uiEnd =int( uiLength - 1);
while(uiBegin < uiEnd)
{
if (sum == aData[uiBegin] + aData[uiEnd])
{
*pNum1 = aData[uiBegin] ;
*pNum2 = aData[uiEnd] ;
return true;
}
if (sum < aData[uiBegin] + aData[uiEnd])
{
uiEnd--;
}
if (sum > aData[uiBegin] + aData[uiEnd])
{
uiBegin++;
}
}
return false;
}
int main()
{
int aData[] = {1};
int iNum1 =0, iNum2 =0;
bool bReturn;
bReturn = FindTwoNumbersWithSum(aData, 1,15, &iNum1, &iNum2);
//cout<<bReturn<<" "<<iNum1<<" "<<iNum2<<endl;
return 1;
}
找出升序数组中和为给定值的两个数字
最新推荐文章于 2022-06-30 17:49:44 发布