如何学好数据结构和算法

数据结构和算法是计算机科学中最重要的课程,作为一名Google的软件工程师,我经常看到一些求职者或刚毕业的学生,他们对于数据结构和算法的学习是远远不够的。这不是说他们看的书是有问题的,或教授们教错了内容,而是学生对这个课程的理解是不到位的。

扎实掌握数据结构和算法的关键并不是要对每一种数据结构和它的子形式都做详尽的调查,然后记住它们的时间复杂度和空间复杂度。记住这些看起来很棒,也很吸 引人,但说实话,你在实际中很少会用到它们。不管怎样,在你的职业生涯中都不会让你实现一个红黑树结点删除的算法,但是,你必须要做到而且轻松的发现在什 么时候你需要用二叉搜索树来解决问题,这个是你经常要用到的技能。

所以,停止背诵那些没用的东西吧,从现在开始学好下面这两件基本并且重要的事情:

1.形象化数据结构。直观的理解某种数据结构是什么样的,使用起来是什么样的,在抽象和实际的内存中是如何存储的。这是一件单独的并且很重要的事情,从最简单的栈和队列到很复杂的平衡树。你可以把它们画出来,直观地展现在你脑海里,无论你用什么方式,最重要的就是你要直观地去理解。

2.知道在自己的代码中何时,并如何去使用这些不同的数据结构和算法。这一点对于学生来说可能有 点难,因为在他们的作业中不需要思考这些。没有关系,你以后会意识到如果你不参加一个实际的项目,你就永远不会理解数据结构,你也不会发现哈希算法是你解 决性能问题的方法。但是,即使是学生,你也应该学习一些实用性强的内容,比如什么时候用哈希表?什么时候用树结构?什么时候最小堆是最好的解决方案?

在Google面试时,我会问一个可以把二叉搜索树作为潜在答案的问题,一个较好的回答可以在几分钟后就可以想到二叉搜索树,并顺着它用10-15分钟去 解决那些我设置的问题,最终得出答案。但是有一次,我遇到了一个更优秀的面试者,他很形象地理解了树的概念,可以直观地把我的问题展现出来,他可能会被算 法精确的复杂度卡住,但是他可以一直在解决问题,因为他做到了把“树结构”直观的展现出来。他最终也得到了这个职位。

PHP100中文网也希望大家在学习数据结构和算法时,专注于理解并运用它们,而不是仅仅背诵算法的内容和复杂度。

原文:http://www.quora.com/How-do-I-strengthen-my-knowledge-of-data-structures-and-algorithms/answer/Robert-Love-1 译文:http://www.php100.com/html/it/focus/2014/1028/7639.html

原文发布于微信公众号 - php(phpdaily)

原文发表时间:2016-07-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏专知

势头强劲: PyTorch周年大事记盘点

【导读】 1月19日,PyTorch团队对PyTorch发布一年来的成长轨迹做了总结。在过去一年里,PyTorch资源包的下载量超50万次、PyTorch频频出...

3365
来自专栏AI研习社

盘点:为 Java 开发者量身定制的五款机器学习库

编者按:机器学习是目前最炙手可热的技术之一,各大公司都在积极招聘相关的编程人才,来填补机器学习和深度学习代码编写的空缺。诚然,根据相关的招聘统计数据,Pytho...

40914
来自专栏量子位

FB发布PyTorch:一个GPU加速的Python深度学习框架

作者 | 量子位 舒石 经过数月的工作,Facebook今天终于对外发布PyTorch的Beta版本。PyTorch是一个Python优先的深度学习框架。先来看...

1966
来自专栏企鹅号快讯

PyTorch一周年战绩总结:是否比TensorFlow来势凶猛?

选自PyTorch 机器之心编译 今天 PyTorch 刚好一周年。自发布以来,由于调试、编译等多方面的优势,它成为 2017 年热度极高的框架之一。本文内容介...

1948
来自专栏华章科技

人人都会用到的数据可视化之常用图表类型

图表是”数据可视化”的常用手段,其中又以基本图表——柱状图、折线图、饼图等等最为常用。

653
来自专栏AI科技评论

开发 | 入门深度学习,读对书很重要

AI科技评论按:本文作者为 Jeffries Consulting 创始人 Daniel Jeffries,他以自己的阅读体验,对当前含金量极高的几本深度学习书...

34811
来自专栏华章科技

关于Python的一切:2018年,你读这8本书就够了

导读:C++、Java大神Bruce Eckel前些天在中国之行中,毫不掩饰对Python的偏爱:“坦白来讲,我最喜欢的语言是Python。每当我有问题需要被解...

501
来自专栏CDA数据分析师

驾驭机器学习的13种框架

想大胆尝试机器学习?这些工具可以为你处理繁重的任务。 驾驭机器学习的13种框架 ? 在去年,机器学习以前所未有的势头进入主流。对这股潮流起到推波助澜的不单单是成...

18210
来自专栏PPV课数据科学社区

R语言什么鬼??你知道吗?

R语言什么鬼?可以用来做什么?和大数据又有什么关系?有没有好的课程推荐啊?学大数据一定要懂R语言么?…… 网络上太多类似的问题,如果恰好你也有类似的疑惑,那么...

2754
来自专栏AI科技评论

为 Java 开发者量身定制的五款机器学习库

编者按:机器学习是目前最炙手可热的技术之一,各大公司都在积极招聘相关的编程人才,来填补机器学习和深度学习代码编写的空缺。诚然,根据相关的招聘统计数据,Pytho...

28611

扫描关注云+社区