摘要:
2014-04-29 02:27题目:找出10亿个数中最小的100万个数,假设内存可以装得下。解法1:内存可以装得下?可以用快速选择算法得到无序的结果。时间复杂度总体是O(n)级别,但是常系数不小。代码: 1 // 18.6 Find the smallest one million number... 阅读全文
posted @ 2014-04-29 03:05
zhuli19901106
阅读(255)
评论(0)
推荐(0)
摘要:
2014-04-29 01:51题目:你有一个文本文件,每行一个单词。给定两个单词,请找出这两个单词在文件中出现的其中一对位置,使得这两个位置的距离最短。解法:我的思路是建立倒排索引,计算出所有单词出现的所有位置。下面代码只给出了两个索引的处理方法。倒排索引一般以链表的形式出现,通过顺序扫描两个链表... 阅读全文
posted @ 2014-04-29 01:58
zhuli19901106
阅读(264)
评论(0)
推荐(0)
摘要:
2014-04-29 01:05题目:数数从0到n总共有多少个数字‘2’?解法:数位动态规划,可以O(log10(n))时间内解决。代码: 1 // 18.4 Count the number of 2s from 0 to n. 2 #include 3 using namespace std;... 阅读全文
posted @ 2014-04-29 01:36
zhuli19901106
阅读(205)
评论(0)
推荐(0)
摘要:
2014-04-29 01:02题目:从m个整数里随机选出n个整数,要求等概率。解法:和洗牌的算法类似,每次随机抽出一个数,抽n次即可。时间复杂度O(m * n),空间复杂度O(m)。代码: 1 // 18.3 pick m integers randomly from an array of n ... 阅读全文
posted @ 2014-04-29 01:05
zhuli19901106
阅读(239)
评论(0)
推荐(0)
摘要:
2014-04-29 00:59题目:设计一个洗牌算法,效率尽量快点,必须等概率。解法:每次随机抽一张牌出来,最后都抽完了,也就洗好了。时间复杂度O(n^2),请看代码。代码: 1 // 18.2 shuffle a deck of 52 cards, it must be perfect rand... 阅读全文
posted @ 2014-04-29 01:02
zhuli19901106
阅读(262)
评论(0)
推荐(0)
摘要:
2014-04-29 00:56题目:不用算数运算,完成加法。解法:那就位运算吧,用加法器的做法就可以了。代码: 1 // 18.1 add two numbers wihout using arithmetic operator. 2 #include 3 using namespace std... 阅读全文
posted @ 2014-04-29 00:59
zhuli19901106
阅读(310)
评论(0)
推荐(0)
摘要:
2014-04-29 00:20题目:给定一个长字符串,和一个词典。如果允许你将长串分割成若干个片段,可能会存在某些片段在词典里查不到,有些则查得到。请设计算法进行分词,使得查不到的片段个数最少。解法:用空间换取时间的动态规划算法,首先用O(n^2)的时间判断每一个片段是否在字典里。这个过程其实可以... 阅读全文
posted @ 2014-04-29 00:29
zhuli19901106
阅读(418)
评论(0)
推荐(0)
摘要:
2014-04-29 00:15题目:将二叉搜索树展开成一个双向链表,要求这个链表仍是有序的,而且不能另外分配对象,就地完成。解法:Leetcode上也有,递归解法。代码: 1 // 17.13 Flatten a binary search tree into a doubly linked li... 阅读全文
posted @ 2014-04-29 00:20
zhuli19901106
阅读(221)
评论(0)
推荐(0)
摘要:
2014-04-29 00:04题目:给定一个整数数组,找出所有加起来为指定和的数对。解法1:可以用哈希表保存数组元素,做到O(n)时间的算法。代码: 1 // 17.12 Given an array of integers and target value, find all pairs in ... 阅读全文
posted @ 2014-04-29 00:11
zhuli19901106
阅读(232)
评论(0)
推荐(0)
摘要:
2014-04-29 00:00题目:给定一个rand5()函数,能够返回0~4间的随机整数。要求实现rand7(),返回0~6之间的随机整数。该函数产生随机数必须概率相等。解法:自己想了半天没想出等概率的方法,最后参考答案了。答案思想实在巧妙:随机0~24间的数,然后把21~24丢弃,剩余的0~2... 阅读全文
posted @ 2014-04-29 00:04
zhuli19901106
阅读(180)
评论(0)
推荐(0)


浙公网安备 33010602011771号