代码改变世界

随笔分类 -  数据结构和算法

手机分配短讯id的面试题目(分析解答篇)

2010-09-03 01:37 by Milo Yip, 13007 阅读, 收藏, 编辑
摘要: 看过上回《厘清需求篇》,读者想到多少个解呢?本篇首先谈及一些基本分析,之后会按两种API设计(纯函数API和含状态的API),分别描述多个解。虽然面试时或许不能进行实际测试,但本文还是给出PC上的效能测试结果。最后分析比较各解之优劣作为总结。 问题分析原来的问题是要从一个无序ids数组里分配一个id。我们可以用数学方式去更清楚地说明这个问题。设m = 256 为所有id的个数,集合U = \lef... 阅读全文

手机分配短讯id的面试题目(厘清需求篇)

2010-08-31 01:42 by Milo Yip, 13914 阅读, 收藏, 编辑
摘要: 前阵子,笔者在TopLanguage论坛里参与讨论了一个不错的面试题目,在此和大家分享,也当作个人的讨论总结。本文列出该问题,并模拟应试者向面试官的对话,以厘清问题需求。题目原文事缘Dbger发起的帖子中,liuxinyu举了一个面试题目,原文如下:有个老的手机短信程序,由于当时的手机CPU,内存都很烂。所以这个短信程序只能记住256条短信,多了就删了。 每个短信有个唯一的ID,在0到255之间。... 阅读全文

回应CSDN肖舸《做程序,要“专注”和“客观”》,实验比较各离散采样算法

2010-05-27 23:57 by Milo Yip, 25671 阅读, 收藏, 编辑
摘要: 自从肖舸在其CSDN博客上说“拒绝回答博客园等网站网友的问题”,实质上不单是拒绝回答,而且还删去包括一些网友及本人对于纯粹技术探讨的评论。当然每位博主都有自由这么做,但个人认为这对于社区的交流发展有负面影响。为了探讨这个技术问题,本人唯有把回应发表于博客园内。本文会阐述之前的论点,评论肖舸的实现,并进行了兩个实验比较不同算法、实现的优劣之处。 之前的“交流&rd... 阅读全文

《编程之美:分层遍历二叉树》的另外两个实现

2010-05-12 00:10 by Milo Yip, 30149 阅读, 收藏, 编辑
摘要: 之前重温本书写书评时,也尝试找寻更好的编程解法。今天把另一个问题的实现和大家分享。问题定义给定一棵二叉树,要求按分层遍历该二叉树,即从上到下按层次访问该二叉树(每一层将单独输出一行),每一层要求访问的顺序为从左到右,并将节点依次编号。下面是一个例子: 输出:节点的定义:书上的解法书上举出两个解法。第一个解法是用递归方式,搜寻并打印某一层的节点,再打印下一层的节点。这方法简单但时间效率不高(但不需要... 阅读全文

两条像面试用的编程问题,和我的囧事

2010-03-04 00:57 by Milo Yip, 12614 阅读, 收藏, 编辑
摘要: 昨天meta网友在某论坛写了两条编程题目:设计一个函数f, 使得它满足:f(f(x))=-x,这里输入参数为32位整型设计一个函数g, 满足:g(g(x))=1/x, x是浮点数以下是一些反面的解答,可澄清这两条个题目:meta提供了同事的解答,但该解答用了static local variable来區分办调用次数。这函数有副作用,且不是thread-safe。因此这不是好答案。Sweating和... 阅读全文

《编程之美: 求二叉树中节点的最大距离》的另一个解法

2010-02-25 03:32 by Milo Yip, 46505 阅读, 收藏, 编辑
摘要: 昨天花了一个晚上为《编程之美》,在豆瓣写了一篇书评《迟来的书评和感想──给喜爱编程的朋友》。书评就不转载到这里了,但在这里可以介绍书里其中一条问题的另一个解法。我觉得这个解法比较简短易读及降低了空间复杂度,或者可以说我觉得比较「美」吧。问题定义: 如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。写一个程序求一棵二叉树中相距最远的两个节点之间的距离。 阅读全文