【有趣的面试算法题】之五 各种整数集的处理
来源:互联网 发布:过期已备案域名 编辑:程序博客网 时间:2024/05/07 17:35
基本题型
基本题: A、B两个整数集合,设计一个算法求他们的交集,尽可能地高效。
这样一个面试题目,像是比较经典,经常得以讨论,大家也热情地给出了好久解法。在2014年腾讯校园招聘中它又出现了,无疑地又平添了大家对它的研究热情,当然也包括我!
目前大家比较认可的方法是,进行映射,以空间换时间。 但具体的映射方法又有好几种:
一,直接按值映射。申请两片足够大的空间,按其绝对值进行标识。这是使用最简单的HASH方法,空间浪费也是巨大的,但绝对不会有冲突。
二,多重HASH映射。相对方法一,节省了很多空间,但不可能避免地会有冲突。 至于具体如何构造这种映射方法/函数,则没有多少阐述。
为能集约地使用空间,又倾向于采用bitmap等数据结构保存标志。
变化题型
当然,以上均假设AB数据集中元素是没有重复的。所以,如果数集有重复数据出现的话,类似的题目又有了。例如:在一个整数集中数字中,求出现且只出现一次的子集、求出现次数不少于两次的子集、求出现次数超过一半的子集、求中位数....
如果数集中只有一个数只出现一次,其余的均是出现两次,如何快速找出?
【由于条件较特殊,可以不用映射,采用特殊方法:全部数据参与异或之后所得就是目标数】
还有一些变化题型:
一,A、B两个区间集合,求交集。 单个的数值演变成了一个区间,并且一个集合内部的区间还有可能重叠。
二, A为一维数轴上N点的增序集合,求长为L的尺子最多能覆盖多少个点。【2014百度校园招聘研发类题目】
三, 数组中的最大子序列的和 / 积
四,...
- 【有趣的面试算法题】之五 各种整数集的处理
- 【有趣的面试算法题】之二 求1~n的整数中1的个数,递归统计区间块中1的数量
- 一道有趣的面试算法题
- 【有趣的面试算法题】 数组循环移动算法细究
- 有趣的图像处理算法
- 有趣的图像处理算法
- 有趣的整数
- 有趣的算法题
- 有趣的算法题
- 【有趣的面试算法题】之三 求最大子序列和/积问题,关注起点和终点
- 程序员面试100题(算法)之输入n个整数,输出其中最小的k个
- 有趣的面试
- 有趣的面试智力题
- 有趣的面试智力题
- 有趣的面试智力题
- 有趣的面试智力题
- Java企业面试算法新得体会之钟--比较有趣的问题20问
- 面试遇到的算法题—(大整数问题)
- setsockopt函数选项总结
- 修改Ubuntu主机名的方法
- java socket编程
- 代码重构方向原则指导
- STM8的福利--Atomthreads实时操作系统
- 【有趣的面试算法题】之五 各种整数集的处理
- InnoDB 存储引擎
- { }soj.1206
- 经典快速排序,linux纯C实现。注意swap方法,并且这个算法还需再敲写15篇。
- 网络第二课(3)---ip协议中的校验和。
- leetcode Sqrt(x) Binary Search
- WordNet
- 盐城市公交路线及时刻表
- 注册自己的二维码