第十周读书笔记

  不得不说,这本书比起其他一些讲编程的书籍来说,似乎显得有些“功利”了,就是从面试出发,告诉你一个个的问题和解决方案。很直接,但也很有效。

  首先呢,由于我还是一个学生,也并不算是什么业界众人,所以一些业界众人不重视基础导致看到这本书立马有种茅塞顿开的感觉我并没有,反而是对于这种问题有一种油然而生的亲切感。我在上学期的数据结构课程中,刚刚学习了这些相关的问题的基础知识,可以说看到问题以后第一时间也有一些想法。但是在看到后面的除去最优解的时候,我反而没那么乐观了。为何?即,在我已经学过高级的方法,例如哈希表,看到相应的问题时自然很容易想到去用这个方法,但是呢,如果我没有学过,这个情形就很像是在工作中遇见一个全新的问题的时候,我要怎么去解决它。很可惜,当我设身处地去思考的时候,一头雾水。

  其实呢,说到底,书中大部分都是算法问题。的确相比起一些枯燥的功能性编程问题来说,他要有趣很多,再配合上一个较为贴切的问题背景,让人有了一种,我真的通过编程解决了生活中的一些问题的感觉。比起ACM的需要大量数学知识来解决问题,这本书的作者,把这些问题变得更加轻松,更像是一个编程问题。《编程之美》不能算是一本很优秀的算法入门书,它没有具体地讲有多少种排序算法,没有讲链表、栈和队列、树、图以至于网络,也没有具体地系统讲关于时间复杂度的分析。但是我认为,这正是这本书的优点所在。编程之美》就很好,我想编辑可能和我的想法一样,他们把那些枯燥乏味的算法基本知识全部抛开,只把那些程序中美丽的东西以一种平易近人的口吻徐徐道来,让你沉浸其中,欲罢不能。试想,在书架床头放这么一本书,当你工作之余,信手拈来看上几页,或仔细思考那些题目中的玄机,或看看问题的解答中闪耀的智慧的光芒,是不是也会被那些美丽的东西感染,进而更喜欢自己的编程工作,更何况那些问题的解答也会给你带来实用性的知识。

  就里面的题来说,关键的不是如何解决,而是如何一步步走到最终的结果。这个思考的过程,才是最珍贵的。随手打开,找道题,或者看完题后先自己想方法,然后和书里的说明相互验证,或者一点点看下去,边看边思考,这两种方法都能得到很多乐趣。书中很多问题都是先给出直观解法,通常这都是效率很低但最容易理解的,然后分析什么地方可以改进,比如将问题不停分解,分解到可以一眼看出答案,然后递推出整个问题的解;对于一些一眼看不出答案的问题,可以先简化,比如2维化一维,比如假设初始只有一个数需要处理等等,对于简化的问题通常比较容易得出答案,然后再扩展得出原问题的解。这种方式不仅给出问题的解法,还给出了思考的过程,下次遇到问题,就可以依照这个思考过程来解决问题。

原文地址:https://www.cnblogs.com/aiyz/p/9123460.html