标签:华为入职练习 华为oj
#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; }
标签:华为入职练习 华为oj
原文地址:http://blog.csdn.net/xiaohanstu/article/details/42235795