找出升序数组中和为给定值的两个数字
2014-12-29 11:09
274 查看
#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; }
相关文章推荐
- 找出升序数组中和为给定值的两个数字
- 找出升序数组中和为给定值的两个数字
- 找出升序数组中和为给定值的两个数字 不要直接用形参里的表示,输出或清零输入时都是大忌
- 【剑指offer】【41】找出升序数组中和为给定值的两个数字
- 找出升序数组中和为给定值的两个数字
- 找出排序数组中和为给定值的两个数字
- 2.12 找出数组中和为给定的值的两个数字
- 快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值
- 程序员面试题精选100题(10)-排序数组中和为给定值的两个数字[算法]
- 程序员面试题精选100题(10)-排序数组中和为给定值的两个数字[算法]
- 排序数组中和为给定值的两个数字
- 快速找出一个数组中的两个数字,其和等于给定值。
- 排序数组中和为给定值的两个数字
- 10.排序数组中和为给定值的两个数字[Find2NumbersWithGivenSum]
- 快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值
- 程序员面试100题之十:快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值(转)
- 和为n连续正数序列 & 排序数组中和为给定值的两个数字
- 排序数组中和为给定值的两个数字
- 程序员面试题目总结--数组(二)【二分查找、找出给定数字出现次数、两个有序整型数组交集、找出数组中唯一的重复元素、判断数组中的数值是否连续相邻】
- [程序猿面试题精选100题]10.排序数组中和为给定值的两个数字