首页 > 代码库 > 找出升序数组中和为给定值的两个数字
找出升序数组中和为给定值的两个数字
#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; }
找出升序数组中和为给定值的两个数字
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。