/*
* 给定排好序的整型数组A,大小为n,现给定数X,判断A中是否存在两数之和等于X。给出一个时间为O(n)的算法。
*
*
* 提示:从两头向中间查找。利用有序的条件
*
*/
解题思路如提示所示,代码如下~
#include <iostream>
using namespace std;
int x;
int arr[] = {1,2,3,4,5,6,7,8};
void solve(int n)
{
int begin = 0, end = n-1;
while(begin < end)
{
int cmt = arr[begin] + arr[end];
if( cmt == x) //找到一对数字之和等于 X
{
cout<<arr[begin]<<" "<<arr[end]<<endl;
return;
}
else if( cmt > x )
end--;
else
begin++;
}
cout<<"不存在两个数的和为: "<<x<<endl;
}
int main()
{
while(cin>>x)
{
int n = sizeof(arr) / sizeof(int);
solve(n);
}
}
欢迎读者留言探讨~O(∩_∩)O~