有序数组中两个数的和等于一个输入值的函数
2015-05-05 11:16
316 查看
题目:
输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度为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;
}
相关文章推荐
- 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
- 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
- 一个有序数组中找出两个数,使得两个数的和等于X的C++实现源代码
- 题目:输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。 要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。 例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,
- 一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好等于输入的那个数字
- 输入一个有序数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字
- 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
- 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
- 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
- 判断一个有序数组中是否有两个数的和等于给定的数
- 【练习】输入一个已经按升序排序过的数组和一个数字sum,在数组中查找两个数,使得它们 的和正好是输入的那个数字sum,要求时间复杂度为O(n)
- (PHP实现剑指offer)在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- 输入一个数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。
- 14.输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。
- 作业五-设计一个程序计算输入的两个数的和与差,要求自定义一个函数 sum_diff(float op1, float op2, float *psum, float *pdiff),其中 op1 和 op2 是输入的两个数,*psum 和*pdiff 是计算得出的和与差.
- 输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。
- 写一个函数,实现一个整形有序数组的二分查找
- 输入一个数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。 时间复杂度O(N) 空间复杂度O(N)
- 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
- 实现一个函数,把字符数组中的每个空格替换成“%20”。 例如输入“we are happy.”,则输出“we%20are%20happy”