课堂上的《编程之美》 (增订版)

增订说明

这是一篇旧作, 本次发布更新和补充了部分内容.

手里拿的是《编程之美》的一刷, 是刚上市的时候买的, 一直没顾得上看. 觉得给学生当参考书看很不错, 读了一些, 发现在课堂上可以用, 而且效果不错.

我采用的讲解方法是从实例到抽象, 最终是想让学生能了解更为一般化的设计技术和模式.  
  
下面的评注仅是抛砖引玉, 希望读者给出更多的拓展.

题目与评注

1.1 让CPU占用率曲线听你指挥
  • 理论结合实践, 非常好的一道的问题, 是不是可以考虑能实现内存使用曲线呢?
1.15 构造数独 4.9 数独知多少
  • 可以考虑数独的求解, 参考一下Dancing Links, 例如这篇.
  • 关于数独的相关知识可以参考wiki.
  • 我的微博里提到过, 数独中有个重要的数字是17, 这是存在唯一解的初始数字个数下界, 也就是说16个及以下初始数字不存在唯一解(无解除外).
2.1 求二进制数中1的个数
2.3 寻找发帖“水王”
  • 这个问题是Majority问题(过半数), 在Voting时比较有用, 可以参考Udi Manber的Introduction to Algorithms: A Creative Approach, 是一种归纳的思路.
2.4 1的数目
  • 考虑大整数(用字符串表示)情况下的解法.
2.5 寻找最大的k个数
  • 这道问题有Linear Selection算法. 当然还可以推广到MultiSelection问题. 此外, 对于在外存中的海量数据, 又应该如何考虑?
2.10 寻找数组中的最大值和最小值
  • 考虑此问题的下界(lower bound).
2.12 快速寻找满足条件的两个数
  • 我最早在CLRS上见过此题. 关键是解法三的证明, 思路清楚了, 理解起来也就方便了.
2.17 数组循环移位
  • 这个问题有一个比较复杂的解法, 就是利用“就地置换”(In-place Permutation)来做. 当然, 根据《编程珠玑》上的说法, 要思路清晰, 不要太复杂。
3.2 电话号码对应英语单词
  • 讲点trie就更好不过了. 可参阅wiki.
3.4 从无头单链表中删除节点
  • 我个人认为这是一道“屠龙”题. 一般来说删除时会维护前一个节点的指针, 另外要是删除链表的尾元素这个例子会出错的.
3.10 分层遍历二叉树
  • 在讲树的层序遍历时候可以用. 一般采用BFS的标准思路, 即利用队列来完成. 此问题还可以用于求解决贾宪三角(很多人称其为杨辉三角, 不甚严谨). 《编程之美》给出了多种思路, 要是这样再总结一下, 学生对此问题应该非常清楚了.
  • 可以将迷宫想象成多分支生长的树, 树能长到的地方就是可以到达的交叉路口, 而且最先触到的分支也是从根开始最近的路线.
  • 不过, 现在的面试题已经进化到不用额外存储空间(递归栈也属于此类)去层次遍历的形态了, 注意结点的父亲指针可以更改, 此题可见stackoverflow.
4.6 桶中取黑白球
  • 经典的咖啡罐问题, 可以考虑一般情况, 是理解循环不变量的一个非常好的例子.

期望

现在算法题越来越重要,国外的几本编程面试经典在不断推出新版,例如:

  1. Cracking the Coding Interview: 189 Programming Questions and Solutions 第6版.
  2. Programming Interviews Exposed: Secrets to Landing Your Next Job, 第3版.

除此之外, 也有很多新的站点能让大家展开讨论, 例如CodeforcesLeetCode, 在此也希望《编程之美》能不断更新, 为此类中文书籍再创一个新的高峰.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容