有序数组中两个数的和等于一个输入值的函数

题目:

输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度为O(N).

如果有多对数字的和等于输入的数字,输出任意一对即可。

例如输入数组1,2,4,7,11,15和数字15,由于4+11=15,,因此输出4和11.

代码如下:

/*data[] 为有序数组,length 为数组的长度sum为用户输入的和num1 为符合和等于sum的第一个数num2 为第二个数*/#include<iostream>using namespace std;bool FindTwoNumbersWithSum(int data[], unsigned int length, int sum, int& num1, int& num2){bool found = false;if (length < 1)return found;int begin = 0;int end = length – 1;while (end > begin){long curSum = data[begin] + data[end];if (curSum == sum){num1 = data[begin];num2 = data[end];found = true;break;}else if (curSum > sum)end–;else begin++;}return found;}int main(){int x, y;int a[6] = { 1, 2, 4, 7, 11, 15 };if (FindTwoNumbersWithSum(a, 6, 15, x, y)){cout << x << endl << y<< endl;}return 0;}

打破原先的记录,生活没有预赛,要想登上它的领奖台,

有序数组中两个数的和等于一个输入值的函数

相关文章:

你感兴趣的文章:

标签云: