
面试笔试算法
svmachine
这个作者很懒,什么都没留下…
展开
-
海量数据查找一个数是否存在
问题:给定一个集合,集合中包含50亿级以上的整数(无序,不重复),给定一个算法,查找该集合中是否存在某个数(内存限制1G) Answer: (1)40亿数据全部放入内存中,所需要的内存数:40*10^8*4B=16G这个明显无法一次性装入内存中。但是,如果我们用计算机中的一位来表示某个数出现与否,出现为1,不出现为0, 就可以减少内存使用量。比如在一块连续的内存区域,15出现,则将第15位置1。原创 2016-10-05 18:11:51 · 3791 阅读 · 0 评论 -
随机洗牌算法
问题:编写一个函数模拟斗地主游戏,将54张牌随机的发给三位玩家,最后剩余3张底牌。解答: (1)使用随机函数,随机生成54个数,生成的随机数如果存在,则重新随机生成,函数如下: public void run(int b, ArrayList<Integer> list){ int num = (int) (Math.random()*b); boolean fla原创 2016-10-07 18:29:33 · 574 阅读 · 0 评论 -
字符串的非空子集
问题:编写一个函数,写出一个字符串的非空子集。解答:对于一个字符串中的每个字符都只有选与不选两种情况,每次需要选择i个字符组成字串,如果选则剩下有需要选择i-1个元素,如果不选则剩下需要选择i个元素。结束条件为i个元素选择完毕。 public static void run(String string){ ArrayList<String> list = new ArrayList<原创 2016-10-07 18:47:47 · 1384 阅读 · 0 评论 -
检查网页(url)重复
问题:有10亿个url,每个url对应一个非常大的网页,如何检测网页是否重复。解答:网页大,数量多,要把它们载入内存是不现实的。 因此我们需要一个更简短的方式来表示这些网页。而hash表正是干这事的。 我们将网页内容做哈希,而不是url,这里不同url可能对应相同的网页内容。将每个网页转换为一个哈希值后,我们就得到了10亿个哈希值, 很明显,两两对比也是非常耗时的O(n2 )。因此我们需要使用其转载 2016-10-07 19:00:43 · 2687 阅读 · 0 评论