【有趣的面试算法题】之五 各种整数集的处理
2013-10-24 23:09
267 查看
基本题型
基本题: A、B两个整数集合,设计一个算法求他们的交集,尽可能地高效。这样一个面试题目,像是比较经典,经常得以讨论,大家也热情地给出了好久解法。在2014年腾讯校园招聘中它又出现了,无疑地又平添了大家对它的研究热情,当然也包括我!
目前大家比较认可的方法是,进行映射,以空间换时间。 但具体的映射方法又有好几种:
一,直接按值映射。申请两片足够大的空间,按其绝对值进行标识。这是使用最简单的HASH方法,空间浪费也是巨大的,但绝对不会有冲突。
二,多重HASH映射。相对方法一,节省了很多空间,但不可能避免地会有冲突。 至于具体如何构造这种映射方法/函数,则没有多少阐述。
为能集约地使用空间,又倾向于采用bitmap等数据结构保存标志。
变化题型
当然,以上均假设AB数据集中元素是没有重复的。所以,如果数集有重复数据出现的话,类似的题目又有了。例如:在一个整数集中数字中,求出现且只出现一次的子集、求出现次数不少于两次的子集、求出现次数超过一半的子集、求中位数....如果数集中只有一个数只出现一次,其余的均是出现两次,如何快速找出?
【由于条件较特殊,可以不用映射,采用特殊方法:全部数据参与异或之后所得就是目标数】
还有一些变化题型:
一,A、B两个区间集合,求交集。
单个的数值演变成了一个区间,并且一个集合内部的区间还有可能重叠。
二, A为一维数轴上N点的增序集合,求长为L的尺子最多能覆盖多少个点。【2014百度校园招聘研发类题目】
三, 数组中的最大子序列的和 / 积
四,...
相关文章推荐
- (转)谈谈数据加密的处理--提供各种算法处理
- 数据加密的处理--提供各种算法处理(转自伍华聪博客)
- 谈谈数据加密的处理--提供各种算法处理
- leetcode:Partition List (链表处理)【面试算法题】
- 有关多项式处理的各种算法总结
- 【有趣的面试算法题】之四 求最小不重复数,源于百度2014届校园招聘软件研发岗位深圳站
- 有趣的图像处理算法
- 各种与视频编解码以及视频图像处理的应用相关的新技术,新方法,各种软件开发相关的算法,思想。
- 谈谈数据加密的处理--提供各种算法处理
- 一道有趣的面试算法题
- 巨有用的一篇帖子 关于各种算法 海量数据处理
- 【有趣的面试算法题】之二 求1~n的整数中1的个数,递归统计区间块中1的数量
- 海量数据处理算法 各种STL容器使用的数据结构剖析
- 打印小票时自动换行算法,可处理各种字符混排
- 打印小票时自动换行算法,可处理各种字符混排
- Android各种学习资料(Rxjava、动画、UI效果、开源库、算法、面试)资源链接
- [Code] 收集各种语言对图片的处理算法实现 图片模糊
- 读[编程之法:面试与算法心得](字符处理)
- 谈谈数据加密的处理--提供各种算法处理
- 打印小票时自动换行算法,可处理各种字符混排