GoCalf Blog 1/100 Algo&Math; 1/100 IT&Game; 1/100 Info&Sharing; 1/100 Personal&Other.

17四/123

从大量整数中选取最小/大的若干个

作者: Calf

topn-selection
Part 15 of 15 in the series 常见面试算法题

问题描述:现在有非常大量的一堆对象,比如有几十亿甚至上百亿个。对象本身是什么可以忽略,每个对象都有唯一标识符和一个正整数属性值,属性值范围有限(不大于一亿)。在单核机器上,内存和磁盘空间充足,用什么方法可以最快地输出属性值最小的若干(如一万)个对象,要求输出结果按照属性值排序。

4四/120

程序基本功之遍历二叉树

作者: Calf

traverse-bin-tree
Part 14 of 15 in the series 常见面试算法题

最近工作忙,没时间思考复杂的问题了。正好要招人就得有面试的嘛,自己也温习一下,要不然怎么去问别人。

今天复习一下二叉树的遍历,前序(pre-order,NLR)、中序(in-order,LNR)、后序(post-order,LRN)、层序(level-order),用和不用递归。

22十一/110

计算斐波纳契数,分析算法复杂度

作者: Calf

fibonacci
Part 12 of 15 in the series 常见面试算法题

问题描述:Fibonacci数(Fibonacci Number)的定义是:F(n) = F(n - 1) + F(n - 2),并且F(0) = 0,F(1) = 1。对于任意指定的整数n(n ≥ 0),计算F(n)的精确值,并分析算法的时间、空间复杂度。

假设系统中已经提供任意精度长整数的运算,可以直接使用。

16十一/112

算法的复杂度与Master定理

作者: Calf

master_theorem

平时设计或者阅读一个算法的时候,必然会提到算法的复杂度(包括时间复杂度和空间复杂度)。比如我们说一个二分查找算法的平均时间复杂度为O(log n),快速排序可能是O(n log n)。那这里的O是什么意思?这样的表达是否准确呢?

今天来复习一下与算法复杂度相关的知识:函数渐进阶,记号O、Ω、θ和o;Master定理。

29十/113

求内积最大的子数组

作者: Calf

max_inner_prod
Part 11 of 15 in the series 常见面试算法题

之前在网上看到有好多人在讨论这道题,据说是一道Google的面试题。

问题描述:有两个长度均为 n 的整数数组 A 和 B,现在要从这两个数组中各抽出 s 个数字,分别构成两个新的数组 C 和 D,要求数组 C 和 D 的内积最大。

21十/1111

求二叉树中两结点的最小公共祖先

作者: Calf

bin_tree
Part 10 of 15 in the series 常见面试算法题

据说这是微软的一道面试题,谁知道呢。

问题描述:找出二叉树上任意两个指定结点的最近共同父结点(LCA,Least Common Ancestor)。

15十/110

任务调度问题:资源占用与释放

作者: Calf

task_with_resource
Part 9 of 15 in the series 常见面试算法题

据说这是2009年Google暑期实习招聘的笔试题。

问题描述:有n个任务,第i个任务运行时需要使用 R[i] 的资源,运行完毕后需要占用 O[i] 的资源(O[i] <= R[i]),假设现在我们总共有s的资源,要求设计一个调度算法,能保证所有任务能顺利执行;如果无法执行完,需要说明理由。

14十/110

检测单向链表是否存在环

作者: Calf

link_circle
Part 8 of 15 in the series 常见面试算法题

问题描述:在单向链表中,每个结点都包含一个指向下一个结点的指针,最后一个结点的这个指针被设置为空。但如果把最后一个结点的指针指向链表中存在的某个结点,就会形成一个环,在顺序遍历链表的时候,程序就会陷入死循环。我们的问题就是,如何检测一个链表中是否有环,如果检测到环,如何确定环的入口点(即求出环长,环前面的链长)。

第 1 页,共 2 页
1
2