Problem 1 : Is it a loop
(判断链表是否有环
) Assume that wehave a head pointer to a link-list
Also assumethat we know the list is single-linked
Can you come up an algorithm to checkwhether this link list includes a loop by using O(n) time and O(1) space wheren is the length of the list
Furthermore, can you do so with O(n) time and onlyone register
方法:使用两个指针,从头开始,一个一次前进一个节点,一个前进 2 个节点,则最多 2N,后两个指针可以重合;如果无环,则正常停止
同样的,可以找到链表的中间节点
Problem 2:设计一个复杂度为 n 的算法找到链表倒数第 m 个元素
最后一个元素假定是倒数第 0 个
提示:双指针查找 Problem 3:用最简单的方法判断一个 LONG 整形的数 A 是 2^n(2 的 n 次方) 提示:x&(x-1) Problem 4:两个烧杯,一个放糖一个放盐,用勺子舀一勺糖到盐,搅拌均匀,然后舀一勺混合物会放糖的烧杯,问你两个烧杯哪个杂质多
假设杂质不等,那么将杂质放回原杯中,则杯中物体重量必变化,不合理
Problem 5:给你 a、b 两个文件,各存放 50 亿条 u rl,每条 u rl 各占用 64 字节,内存限制是 4G,让你找出 a、b 文件共同的 u rl
法 1:使用 hash 表
使用 a 中元素创建 hash 表,hash 控制在适当规模