求已排序数组中和为某个数的两个数

发布时间:2016-12-8 0:24:56 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"求已排序数组中和为某个数的两个数",主要涉及到求已排序数组中和为某个数的两个数方面的内容,对于求已排序数组中和为某个数的两个数感兴趣的同学可以参考一下。

/** 题目:输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。 要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。 例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。 **/ #include <iostream> void solve(int* arr,int size,int val) { if(arr==NULL || size<=1) return ; int begin=0; int end=size-1; while(begin<end) { while(arr[begin]+arr[end]>val && begin<end) --end; if(arr[begin]+arr[end]==val) { std::cout<<arr[begin]<<" "<<arr[end]<<std::endl; break; } ++begin; } } int main(int argc,char* argv[]) { int arr[]={1,2,4,7,11,15}; solve(arr,(sizeof(arr)/sizeof(int)),15); system("PAUSE"); return 0; }

上一篇:Ext给GridPanel上指定的行制定颜色
下一篇:HDU 4706 Children's Day

相关文章

相关评论