在排序数组中查找和为给定值的两个数字
来源:互联网 发布:宿城区网络问政 编辑:程序博客网 时间:2024/05/16 01:28
14:
题目:输入一个已经按升序排序过的数组和一个数字,
在数组中查找两个数,使得它们的和正好是输入的那个数字。
要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。
题目:输入一个已经按升序排序过的数组和一个数字,
在数组中查找两个数,使得它们的和正好是输入的那个数字。
要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。
例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。
思路:由于数组为升序,因而可以设置头尾两个指针,从第一个元素和最后一个元素相加,如果大于sum, 则尾指针向前移1个元素,继续判断两个数的和;如果小于sum,则头指针向后移1个元素,继续判断两个数的和。
#include <iostream>#include <stdio.h>#include <cstdlib>using namespace std;bool search(int A[], int &sum, int &begin, int &end){ bool find = false; while(begin < end) { if(A[begin]+A[end] > sum) end--; else if(A[begin]+A[end] < sum) begin++; else { find = true; break; } } return find;}int main(){ int begin = 0, end = 5, sum = 15; int A[100] = {1, 2, 4, 7, 11, 15}; if(search(A, sum, begin, end)) cout << A[begin] << " " << A[end] << endl; return 0;}
- 在排序数组中查找和为给定值的两个数字
- 在排序数组中查找和为给定值的两个数字
- 在排序数组中查找和为给定值的两个数字
- 在排序数组中查找和为给定值的两个数字--总结
- 14.在排序数组中查找和为给定值的两个数字
- 在排序数组中查找和为给定值的两个数字
- 在排序数组中查找和为给定值的两个数字
- 在排序数组中查找和为给定值的两个数字
- 在排序数组中查找和为给定值的两个数字
- 在排序数组中查找和为给定值的两个数字--总结
- 在排序数组中查找和为给定值的两个数字
- 在排序数组中查找和为给定值的两个数字
- 在排序数组中查找和为给定值的两个数字
- 在排序数组中查找和为给定值的两个数字 C++实现
- 在排序数组中查找和为给定值的两个数字
- 在数组中查找和为给定值的两个数字(排序数组和不排序数组)
- 在已排序的数组中,查找和为给定值得两个数字
- 每天三道冲刺工作--在排序好的数组中查找和为给定值的两个数字
- 运行如下结果 输出时什么?
- python 装饰器
- 大数加法,华为 程度2
- TreeView图片添加
- 找春天春天的飞鸽传书
- 在排序数组中查找和为给定值的两个数字
- ARM LED裸机实验(gun汇编)
- IOS随笔——页面跳转
- 为什么要用存储过程
- 动态加载JQUERY
- 创建连接
- VS2012编译兼容XP程序的方法
- LINUX定时任务(crontab用法)
- Jump Game