免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 10084 | 回复: 31
打印 上一主题 下一主题

[算法] 人人网笔试题一道,小菜求解 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-10-28 13:05 |只看该作者 |倒序浏览
乱序存储10个大小连续的自然数(如6,1,2,3,9,4,5,7,0,8)中随机抽取一个,根据余下的数,如何判定被抽取数的值?如果有1000万或更多自然数时,判定被抽取数的值时,也用同样的方法吗?

论坛徽章:
0
2 [报告]
发表于 2011-10-28 13:10 |只看该作者
sum

论坛徽章:
0
3 [报告]
发表于 2011-10-28 13:29 |只看该作者
如果先比较分半,前部相减如果等于0,就算后面的的(就是全部的1/4)相减,再测试。
如果不等于0,就算出来了。最坏的情况是时间度几乎和全部求和相减差不多。不过你可以加入 random来控制。
这样出现最坏的情况概率就低多了。
这样是不是比orignal sum - last sun
要快点。

论坛徽章:
0
4 [报告]
发表于 2011-10-28 14:01 |只看该作者
对每个数, 奇数减偶数, 记录下最大值和最小值, 最后计算, 复杂度O(n)

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
5 [报告]
发表于 2011-10-28 16:04 |只看该作者
乱序存储10个大小连续的自然数(如6,1,2,3,9,4,5,7,0,8)中随机抽取一个,根据余下的数,如何判定被抽取数的 ...
zz8880 发表于 2011-10-28 13:05



    总和应该是45,少几被抽走的就是几,其他的算法相同。

论坛徽章:
0
6 [报告]
发表于 2011-10-28 16:12 |只看该作者
10个的简单,sum一遍就行了。
1000万个的,可以排序,nlog(n)+n。
或者不嫌费内存,用bitmap。
再或者使用异或的方法,先计算0到1000万的异或值,
在计算这个数组的异或值,然后将这两个结果再异或一把就行了。

论坛徽章:
0
7 [报告]
发表于 2011-10-28 16:22 |只看该作者
即使很多个数也可以用sum啊,最开始全部算一遍,每次抽取和插入的时候根本不用把所有的数都加一遍吧?

论坛徽章:
0
8 [报告]
发表于 2011-10-28 16:48 |只看该作者
异或 不再给提示了  自己想啊

论坛徽章:
0
9 [报告]
发表于 2011-10-28 17:00 |只看该作者
使用位图或许不错

论坛徽章:
0
10 [报告]
发表于 2011-11-24 15:50 |只看该作者
异或 不再给提示了  自己想啊
goubao198562 发表于 2011-10-28 16:48



    ----------------------------
哪位大哥给介绍下?不懂
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP