从一个取值范围为1~N的不重复数列中找出所有满足两数和为N+1的数对
来源:互联网 发布:js往json中添加元素 编辑:程序博客网 时间:2024/06/06 05:00
转载:http://blog.csdn.net/wcyoot/article/details/6436304
从一个取值范围为1~N的不重复数列中找出所有满足两数和为N+1的数对
题目:一个整数数列,元素取值可能是1~N(N是一个较大的正整数)中的任意一个数,相同数值不会重复出现。设计一个算法,找出数列中符合条件的数对的个数,满足数对中两数的和等于N+1。复杂度最好是O(n),如果是O(n2)则不得分。
算法:建立一个map<数列元素值, 对应索引>. 对每个元素i,如果N+1-i不在map中,插入i,否则输出(i, map[i]).复杂度O(n).
#include <map>// ar为不重复的数列,输出ar中所有两数和为N的数对void PrintPairs(const std::vector<int>& ar, int N){std::map<int, int> nodemap; // <数值,位置>for(size_t i = 0; i < ar.size(); ++i){std::map<int, int>::const_iterator iter = nodemap.find(N - ar[i]);if(iter == nodemap.end())nodemap[ar[i]] = i;else{printf("找到数对(%d, %d)/n", ar[iter->second], ar[i]);}}}
0 0
- 算法题29 从一个取值范围为1~N的不重复数列中找出所有满足两数和为N+1的数对
- 算法题29 从一个取值范围为1~N的不重复数列中找出所有满足两数和为N+1的数对
- 从一个取值范围为1~N的不重复数列中找出所有满足两数和为N+1的数对
- 求从1,2...n中取任意个不重复的数和为m的所有组合
- 一个整数数列,元素取值可能是1~N(N是一个较大的正整数)中的任意一个数,相同数值不会重复出现。设计一个算法,找出数列中符合条件的数对的个数,满足数对中两数的和等于N+1
- 温故知新,基础复习(一个有序从大到小不重复的数列,任意给出一个sum值,求出数列中所有满足和为sum的数对)
- 取值为[1,n-1] 含n 个元素的整数数组至少存在一个重复数,O(n) 时间内找出其中任意一个重复数
- 长度为N的数列中寻找和为N+1的数对
- 取值为[1,n-1]含n个元素的整数数组至少存在一个重复数,找出一个重复元素
- 算法习题21:输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数,找出和为m
- 面试题精选(79):取值为【1,n-1】含n个元素的整数数组至少存在一个重复数,O(n)时间内找出其中任意一个重复数
- 长度为n的数组,有一个数m重复出现了n/2+1次,找出这个数
- 写正确函数需要注意的地方:输入两个整数n和m,从数列1,2,3,...n中随意取几个数,使其和为m,列出所有可能组合
- 从n个数中找出每个数的重复数
- 从1至N中找出所有不重复加在一起等于N的数组
- 输入两个整数n和m,从数列1,2,3...n中随意取几个数,使其和等于m,要求列出所有的组合
- 输入两个整数n 和m,从数列1,2,3.......n 中随意取几个数, 使其和等于m ,要求将其中所有的可能..
- 2.数组a[N]中,随机存放了1至N-1的数,再加入一个数,这个数和之前的n-1其中某个数重复。写一个函数,找出被重复的数字.时间复杂度必须为o(N
- 第一天
- Android Api Demos登顶之路(三十九)Fragment-->show hide
- java(08-19)
- iOS开发页面之间的几种传值方式
- R语言_基本图形
- 从一个取值范围为1~N的不重复数列中找出所有满足两数和为N+1的数对
- C#相关知识
- 8-19
- Git flow的分支模型与及常用命令简介
- hdu4252单调栈
- 转:java中include动作和include指令的区别
- 作为软件开发人员应该知道的最基本的东西
- DB2 substr,instr使用
- 在MyEclipse的web项目/java项目中,使用Hibernate-tools中的hbm2java和hbm2ddl工具,根据hbm文件自动生成pojo和数据库脚本