图书前言

前  言

  算法是计算机科学的核心主题之一,有一个好的算法设计功底是从事IT工作的坚实基础,也是IT领域研究工作中必需的技能。传统的数据结构课程中的算法设计是围绕数据结构展开的,而算法设计课程主要讨论通用的算法设计策略,在面试笔试的编程中具有更好的实用性。

  常用的通用算法设计策略有暴力法、回溯法、分枝限界法、分治法、动态规划和贪心法等,本书以此为主线,汇总国内外众多著名IT企业近几年的算法面试笔试真题并予以解析,透彻剖析了难点和疑点,突出了算法设计的思想和分析的基本原则,为面试者提供了清晰的、整体的思路和方法。

  比起算法设计和分析课程,本书更侧重算法设计思路,而不是算法复杂度分析和算法正确性证明的赘述。另外,算法的实现采用C++标准模板库(STL),STL不仅功能强大、简洁和实用,提供的数据结构(如栈、队列、优先队列等)和算法(如排序等)效率高,而且使面试者有很多的时间专注算法策略的实现,而不用将大量时间浪费在程序细节上。面试题编号后面的星号个数表示本题的难度,其中一星难度最低,五星难度最高。

  书中程序除了个别外其他都在Visual C++ 6.0环境下调试通过(采用较低版本编译器的目的是让代码具有更好的兼容性)。在本书的编写过程中参考了众多网站和博客,无法一一列出,编者在此表示衷心感谢。

  限于编者水平,书中难免存在遗漏,恳请读者批评指正,编者的联系邮箱是licb1964@126.com。

  

                           编  者

                                                             2018年3月