编程之美读书笔记-快速寻找满足条件的两个数
来源:互联网 发布:淘宝鹊桥下载 编辑:程序博客网 时间:2024/05/11 13:33
本文转载自求在有序数组中查找两个数的和为指定数
题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字,要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。
解析:此题要求是时间复杂度为O(n),意味着只能遍历一次数组,我们要充分利用该数组已经排序的特征。可以从两端同时遍历,对a[begin]+a[end]分3种情况的考虑:(1)大于给定和,则end--;(2)小于给定和,则begin++;(3)相等,则打印结果。
#include<iostream> using namespace std; void FindSum(int a[],int length,int sum) { int i=0; int j=length-1; bool flag=false; while(i<j) { int result=a[i]+a[j]; if(result>sum) --j; else if(result<sum) ++i; else if(result==sum) { flag=true; break; } } if(flag) cout<<a[i]<<" "<<a[j]<<endl; else cout<<"not find"<<endl; } int main() { int a[]={1,2,4,7,11,15}; int len=sizeof(a)/sizeof(a[0]); FindSum(a,len,15); }
0 0
- 编程之美-快速寻找满足条件的两个数
- 编程之美--快速寻找满足条件的两个数
- [编程之美]快速寻找满足条件的两个数
- 《编程之美》:快速寻找满足条件的两个数
- 编程之美--快速寻找满足条件的两个数
- 编程之美快速寻找满足条件的两个数
- 读书笔记之编程之美 - 2.12 快速寻找满足条件的两个数
- 编程之美读书笔记2.12—快速寻找满足条件的两个数
- 编程之美读书笔记-快速寻找满足条件的两个数
- 编程之美2.12——快速寻找满足条件的两个数或三个数
- 编程之美——快速寻找满足条件的两个数或三个数
- 编程之美2.12——快速寻找满足条件的两个数或三个数
- 编程之美2.12——快速寻找满足条件的两个数或三个数
- 编程之美--寻找满足条件的两个数
- 编程之美--寻找满足条件的两个数 .
- 编程之美之快速寻找满足条件的两个数
- 编程之美2.12——快速寻找满足条件的两个数。(拓展满足条件的多个数)
- 编程之美2.12——快速寻找满足条件的两个数
- Gradle中文使用文档
- (OK) Docker中使用固定IP——docker run -i -t --rm --net='none'
- 递归实现n个不同字符的所有全排列
- 判断输入的年月日是否合法,并指出是闰年还是平年
- HDU 4336Card Collector 概率dp 状态压缩
- 编程之美读书笔记-快速寻找满足条件的两个数
- 后缀数组(SA)模版
- Qt操作工具条
- 使用TextView实现跑马灯的效果
- 2013年第四届蓝桥杯C/C++程序设计本科B组决赛 连续奇数和(结果填空)
- C#界面闪烁问题解决方案
- hdu1848Fibonacci again and again
- 打印乘法口诀表
- leetcode.210. Course Schedule II