社区
数据结构与算法
帖子详情
高分求算法,从一组无序整数数组中找出和为某整数的最佳算法
guostong
2007-07-02 11:34:12
一组无序数组,包括负数,要求找出一对和为48的整数。
要求复杂度必须小于 O(N^2)
...全文
389
9
打赏
收藏
高分求算法,从一组无序整数数组中找出和为某整数的最佳算法
一组无序数组,包括负数,要求找出一对和为48的整数。 要求复杂度必须小于 O(N^2)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
waterx
2007-07-06
打赏
举报
回复
如果只找一组解是O(n),如果要找所有的解就不是了.
wangwang1103
2007-07-06
打赏
举报
回复
从两个数组中找相同的元素的问题??
为什么要找两个相同元素,如果没有24并不能说明没有两个元素之和等于48。
medie2005(阿诺)的解法不错,先排序用堆排序或者快排,然后用二叉搜索方法。
其时间时间复杂度为O(Nlog(N))
guostong
2007-07-05
打赏
举报
回复
to: Waterx
为什么不是 O(N),没有变化嘛
jinwei1984
2007-07-05
打赏
举报
回复
mark
waterx
2007-07-05
打赏
举报
回复
guostong(笨驴),如果所有元素的值都相等,排序后查找的复杂度就不是O(n)了.
bigc2000
2007-07-05
打赏
举报
回复
都是一样的
medie2005
2007-07-03
打赏
举报
回复
先将序列排序,得到新序列NEW[]。
再头到尾扫描一遍新序列。
对当前扫描点NEW[i],检查序列中是否元素与NEW[i]的和为48。这个检查过程可以这样:对NEW[i]后的元素实施二分查找,若存在值为48-NEW[i]的元素,那么,就找到了一组解了。
复杂度:排序耗时O(nlog(n)),查找耗时O(nlog(n))。因而总的复杂度是O(nlog(n))。
guostong
2007-07-03
打赏
举报
回复
zgg___()的思路不错,排序后查找的复杂度只有 O(N)了,复杂度基本上就是排序的复杂度。
zgg___
2007-07-03
打赏
举报
回复
用48减去数组中所有的数,得到新的数组,这样问题就转化为:从两个数组中找相同的元素的问题。按照这个思路,可以采取下面的步骤:
1、看看数组中有没有两个24;
2、将数组排序得到有序数组a1(由小到大);
3、48-a1得到数组,经过逆序后得到数组a2;
4、比较a1和a2中的(第一个)数;if 相等 then 得到结果;
5、将4比较中较小的数的指针后移一个;if 到数组尾部 then 没有结果 else goto 4;
《ACM竞赛-C/C++入门》 C语言-13
清华大学尹成老师、微软全球具有价值专家,手把手从基础教学到深入探讨,教你成为信息学竞赛高手,让你知识点一通百通拿到竞赛
高分
,为编程开发打下坚实的基础! 从零基础到在蓝桥杯、NOIP、ACM竞赛、信息学...
利用大顶堆进行堆排序
今天上午在看《数据结构
高分
笔记》中的排序
算法
时,发现里面将的堆排序很好,在此记录一下。1、什么是堆 堆是一种数据结构。可以把堆看成是一棵完全二叉树,这棵完全二叉树满足:任何一个非叶子结点的值都不大于...
排序
算法
(直接插入、折半插入、希尔排序、冒泡排序、快速排序、简单选择排序、堆排序、归并排序、基数类排序)
一、概述 二、
算法
复杂度 三、插入类排序 1.直接插入排序 2.折半插入排序 3.希尔排序 四、交换类排序 1.冒泡排序 2.快速排序 五、选择类排序 1.简单选择排序 2.堆排序 六、归并排序 1.二路归并...
算法
导论-上课笔记2:概率分析/随机
算法
/堆排序/优先队列
堆是一种数据结构,可将堆看作是一棵完全二叉树
《漫画
算法
》读书心得笔记-未完
感谢FunTester送的书籍。 第一章
算法
概述 1.
算法
什么是
算法
?书中举了1+2+3+4....+....
数据结构与算法
33,008
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章