前言
这个题目有点大了,但是还是要写。因为很重要。本文应该只会讨论到如何解决计算机中的问题。文中涉及的基础词汇(如算法复杂度等)请自行google。这篇文章会不定期更新,基本上是一种有感而发的记录。
一些原则
- 正确最重要
- 运用标准模式
先想容易的解法
- 考试除了检查学习进度,还具有筛选作用。而现实世界中许多问题都可以被容易的方式解决。容易的方式除了轻松外还有可靠,易读,易理解等优点。
- 题目1:敏感词过滤
这是我曾经在实际工作中遇到的一个东西,上面链接的博主用状态机(DFA)解的。我当时用python遍历去撞set解的,大概只有五行。看上去,DFA的算法复杂度非常低,c语言速度非常快,但是我的解法也满足了我的应用,且不用担心出错。而python成功的关键之一在于它用运行时间换开发时间。当然,可以拉开源项目,有相当一部分项目有很多star和fork,正确性应该是能保证的。但是在处理能力高于数据量的时候,容易的解法是最可取的。 - 题目2:图片比对
今天打开tophub看到的。第一眼想到的就是hash,而且是用shell做的。提问者的需求好像是自身的,所以对着诸多java解很无语。 - 容易的解法有的时候不容易想到,缺的是思维模式(下一部分