求集合S中两个元素的和为整数X
来源:互联网 发布:mac sdk路径 编辑:程序博客网 时间:2024/05/22 03:14
问题:亲给出一个运行时间为⊙(nlgn)的算法,使之能在给定一个由n个整数构成的集合S和另一个整数x时,判断出S中是否存在有两个其和等于x的元素。
解决方法:
1,首先对n个元素排序(归并排序或者堆排序),时间复杂度为⊙(nlgn);
2,令Xi = A[i], Xj = A[j],初始化i = 0, j = n - 1
按照如下规则进行:
if Xi + Xj < X
then i++
if Xi + Xj > X
then j--
if Xi + Xj == X
then print Xi and Xj
虽然感觉会是正确的,但是需要系统的证明,利用反证法,假如排序后的数组A,A[m] + A[k] == X,初始化时,i <= m, j >= k,首先反证在移动过程中i不可能大于m,假如i大于m,则在i大于m之前,必有i必会有一次等于m,按照移动规则,i等于m时,j是大于k的,这时的A[i] + A[j] > X,所以i会一直停留在m处,知道j移动到k为止,所以i不会移动超过m,同理可以证明j不会小于k,则算法是正确。
PS:另一种方案采用数组T[X],其中X为要求的两元素之和,遍历n个元素,设置T[A[i]] == 1,最后遍历T[X]数组,如果T[i] == 1,则检查T[X - i] == 1,如果等于1,说明存在,说明存在两元素的和等于X,知道检查所有的T数组。
- 求集合S中两个元素的和为整数X
- 描述一个运行时间为Θ(nlgn)的算法,给定n个整数的集合S和另一个整数x,该算法能确定S中是否存在两个其和刚好为x的元素
- 2.3-7 描述一个运行时间为Θ(nlgn)的算法,给定n个整数的集合S和另一个整数x,该算法能确定S中是否存在两个其和刚好为x的元素
- 「算法导论」:课后习题2.3-7求集合S中是否有两个元素的和为X
- 判断集合S中是否含有两个元素其和为x
- 集合S中是否存在两个元素使它们的和等于另外一个整数
- 题目:请给出一个运行时间为Θ(nlgn)的算法,使之能在给定一个由n个整数构成的集合S和另一个整数x时,判断出S中是否存在有两个其和等于x的元素。
- 算法导论 2.3-7 给出一个运行时间为⊙(nlgn)的算法,使之能在给定一个由n个整数构成的集合S和另一个整数x时,判断出S中是否存在有两个其和等于x的元素
- 描述一个运行时间为O(nlgn)的算法,使之能在给定一个由n个整数构成的集合S和另一个整数 X 时,判断出S中是否存在有两个其和刚好等于 X 的元素。
- 判断集合S中是否存在两个其和等于x的元素
- 算法入门---判断集合S中是否存在两个其和等于x的元素
- 算法入门---判断集合S中是否存在两个其和等于x的元素
- 确定集合中是否存在两个其和刚好为X的元素?
- 题目1.请给出一个运行时间为O(nlgn)的算法,使之能在给定一个由n个整数构成的集合S和另一个证书x时,判断出S中是否存在有两个其和等于x的元素。
- 算法学习笔记----判断集合S中是否存在有两个其和等于x的元素
- 给定N个整数集合是否存在两个其和刚好为指定常数的元素
- 求数组中元素为另外两个元素和的最大元素
- 找出集合S中和为X的两个数
- 微博系统架构
- c++ coding style
- WPF调用MFC DLL总结
- [原创翻译][新手必看]在何时该用什么方式编译WinCE
- soap协议中的soap结构体
- 求集合S中两个元素的和为整数X
- 推荐系统应用研究:音乐电台
- 数据库访问优化法则详解之返回更少的数据
- 工作2年4个月零1天
- 高性能Web服务器设计
- ORACLE 11G Flashback Versions Query
- 打开 myeclipse时,出现unable to load editor associations 和 Unable to read workbench state
- Linux下一些重要的头文件
- hashmap和hashtable的区别