14. 排序数组中找和为n的两数
来源:互联网 发布:前线seo 编辑:程序博客网 时间:2024/06/01 21:12
题目:输入一个已经按升序排序过的数组和一个数字,
在数组中查找两个数,使得它们的和正好是输入的那个数字。
要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。
在数组中查找两个数,使得它们的和正好是输入的那个数字。
要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。
例如输入数组1、2、4、7、11、15 和数字15。由于4+11=15,因此输出4 和11。
HANDWRITING:
void search(int *a, int size, int n) {int s = 0, e = size - 1, sum;while (s < e) {sum = a[s] + a[e];if (sum == n) cout<<a[s]<<" "<<a[e]<<endl;else if (sum < n) ++s;else --e;}}
ANSWER FROM:http://blog.csdn.net/v_july_v/article/details/6870251
Use two cursors. One at front and the other at the end. Keep track of the sum by moving the cursors.
void find2Number(int a[], int n, int dest) { int *f = a, *e=a+n-1; int sum = *f + *e; while (sum != dest && f < e) { if (sum < dest) sum = *(++f); else sum = *(--e); } if (sum == dest) printf(“%d, %d\n”, *f, *e);}
- 14. 排序数组中找和为n的两数
- 【 Algorithm】排序数组中查找和为n的一对数和所有组合
- 排序数组中查找和为给定值的两个数O(n)
- 在已排序的数组中寻找和是给定值的两项,要求时间复杂度为O(n)
- 如何在一个给定数组中找两个和为某个定值的数,要求时间复杂度为O(n)
- 在一个数组中找两个数,使得它们的和为一个指定的数
- 算法面试题:在N个数中,找和为M的两个数
- 深搜从n个数中找和为k的数
- 14. 求升序的数组中两个数的和为N
- 列出长度为n的数组中,所有加和为m的数
- 2016魅族校招的一道笔试题,将一个长度为n的数组中存放的是未排序的0到n-1,要求只能将0和其他数swap,完成数组排序
- C++在已排序数组中查找和值确定的第一次出现的两个数(要求时间复杂度为o(n))
- 算法题29 从一个取值范围为1~N的不重复数列中找出所有满足两数和为N+1的数对
- 算法题29 从一个取值范围为1~N的不重复数列中找出所有满足两数和为N+1的数对
- 从一个取值范围为1~N的不重复数列中找出所有满足两数和为N+1的数对
- 一个数组中两个数的和为N,找出这两个数字的下标
- 无序数组中找出和为N的两个数 Two Sum
- 排序后数组中相邻两数的最大值
- mysql中修改root密码
- 视频码流分析工具
- 【aabb 7744】
- UVa 10730 Antiarithmetic? (想法题)
- U盘分区,格式化及其相关
- 14. 排序数组中找和为n的两数
- POJ3468 线段树||伸展树
- 学习笔记-概率问题
- Linux系统服务 3 ---- FTP服务原理及vsftpd服务配置
- 解读C指针(4)——指针运算
- 研究了一下关于图片预览的方法
- 15. 转换二叉查找树
- Java基础(五)(IO流,线程)
- HDU Starship Troopers(树形DP)