职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 267|回复: 6

一道算法面试题

[复制链接]
有烟没火 发表于 2011-8-24 11:22 | 显示全部楼层 |阅读模式
两个1000W个元素的数组,如何有效的找出他们的交集。

天上智喜 发表于 2011-8-24 11:22 | 显示全部楼层
元素是整数?还是任意对象?

shmilyyu 发表于 2011-8-24 11:22 | 显示全部楼层
vieri122 写道
元素是整数?还是任意对象?

为整数

走就走吧 发表于 2011-8-24 11:23 | 显示全部楼层
我的思路是开一个长度为n的数组x。遍历第一个1000W个元素的数组a,对于每一个值a[i],置x中相应的位为1,即x[a[i]]=1。再遍历第二个1000W个元素的数组b,对于每一个值b[i],判断x[b[i]]是否为1,为1则该值属于交集。

至于开多少长度的数组,若题目中指定元素为整数,则n=Integer.MAX_VALUE,若元素为长整数,则n=Long.MAX_VALUE,若不知道范围,ok,遍历一遍x取最大值呗。

最后的时间复杂度都是O(n).

不知道各位TX有没有更好的解题思路~

已经来了吗 发表于 2011-8-24 11:23 | 显示全部楼层
对第一个1000W数组hash,生成一个hash化数组。对第二个1000W数组采取同样算法hash,得到下标i,取hash[i]是否为null,不为null则是交集。剩余的问题是如何解决hash冲突

月上萧萧 发表于 2011-8-24 11:23 | 显示全部楼层
整数的话,排序后比较好不好啊

醉倚西风 发表于 2011-8-24 11:24 | 显示全部楼层
开个数据池吧
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-4-28 05:25 , Processed in 0.130698 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表