寻找和为定值的两个数
来源:互联网 发布:js给input添加样式 编辑:程序博客网 时间:2024/05/18 02:31
寻找和为定值的两个数
题目描述
输入一个数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。
要求时间复杂度是O(N)。如果有多对数字的和等于输入的数字,输出任意一对即可。
例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。
要求时间复杂度是O(N)。如果有多对数字的和等于输入的数字,输出任意一对即可。
例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。
解法:
如果数组是无序的,先排序(N log N),然后用两个指针i,j,各自指向数组的首尾两端,令i=0,j=n-1,然后i++,j--,逐次判断a[i]+a[j]?=sum,
如果某一刻a[i]+a[j] > sum,则要想办法让sum的值减小,所以此刻i不动,j--;
如果某一刻a[i]+a[j] < sum,则要想办法让sum的值增大,所以此刻i++,j不动。
所以,数组无序的时候,时间复杂度最终为O(N log N + N)=O(N log N)。
如果某一刻a[i]+a[j] > sum,则要想办法让sum的值减小,所以此刻i不动,j--;
如果某一刻a[i]+a[j] < sum,则要想办法让sum的值增大,所以此刻i++,j不动。
所以,数组无序的时候,时间复杂度最终为O(N log N + N)=O(N log N)。
0 0
- 寻找两个数的和为定值的算法
- 寻找和为定值的两个数
- 寻找和为定值的两个数
- 寻找和为定值的两个数
- 寻找满足和为定值的两个数
- 寻找和为定值的两个数/多个数
- 寻找和为定值的两个数
- 寻找和为定值的两个数
- 寻找和为定值的两个数
- 寻找和为定值的两个数
- 【算法】寻找和为定值的两个数
- 寻找和为定值的两个数
- 寻找和为定值的两个数
- 寻找和为定值的两个数
- 数组------寻找和为定值的两个数
- 寻找和为定值的两个数
- 寻找和为定值的两个数
- 寻找和为定值的两个数
- (4.3.1.13)Android FragmentPagerAdapter数据刷新notifyDataSetChanged没效果研究
- iOS Layer动画收集
- 动态库与静态库的原理介绍
- #1014 : Trie树
- 0911_Linux命令整理
- 寻找和为定值的两个数
- 约瑟夫环问题
- Spring详细教程
- 关于UICollectionViewController
- 基于CCA的图像文本交叉检索
- memcached集群部署
- JExcelApi使用记录
- 网络技术之——网络连接URLConnection、单/多线程下载
- OpenGL中三维物体显示在二维屏幕上显示的变换过程