如何学好数据结构和算法

数据结构和算法是计算机科学中最重要的课程,作为一名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 条评论
登录 后参与评论

相关文章

来自专栏大数据挖掘DT机器学习

想学习R语言却不知道如何学习,应该按何种步骤?

问题: 背景金融小硕,想学习R语言却不知道应该如何学习,应该按何种步骤,看哪些书或者视频资料等东西,所以提问这个问题,希望知道学习R语言的一般过程是怎样的,...

3314
来自专栏钱塘大数据

五个技巧教你用编程实现数据可视化

导读:数据可视化可以通过视觉形式来呈现抽象的数据信息,有利于对数据进行更深入的观察和分析,除了使用现有的可视化软件和工具,也可以用编程定制属于自己的数据可视化,...

3459
来自专栏程序员宝库

如何掌握程序语言

学习程序语言是每个程序员的必经之路。可是这个世界上有太多的程序语言,每一种都号称具有最新的“特性”。所以程序员的苦恼就在于总是需要学习各种稀奇古怪的语言,而且必...

2784
来自专栏企鹅号快讯

争论背后的编程语言:谁才是最容易出bug的语言?

10月份,ACM发布了一个关于编程语言对软件质量的影响的研究报告,在报告中有一些关于bug的有趣发现。 研究人员Baishakhi Ray,Daryl Posn...

1949
来自专栏Albert陈凯

函数式编程很难,这正是你要学习它的原因

英文原文:Functional Programming Is Hard,That's Why It's Good   很奇怪不是,很少有人每天都使用函数...

2604
来自专栏web前端教室

欲火焚身,心静则凉--只靠冲动是不能长久地

抱歉,今天我标题党了,Orz... 解释一下标题的意思, 1、“欲火焚身”,看前端开发工程师的工资都二三十k,激动了,想像着自己也拿二三十k的月薪,会是个什么情...

17910
来自专栏星流全栈

G2 - 阿里巴巴内部开放的数据可视化工具

1955
来自专栏钱塘大数据

【干货】五个技巧教你用编程实现数据可视化

导读:数据可视化可以通过视觉形式来呈现抽象的数据信息,有利于对数据进行更深入的观察和分析,除了使用现有的可视化软件和工具,也可以用编程定制属于自己的数据可视化,...

3227
来自专栏技术翻译

学习Python的4个原因

你已经学过Python了吗?如果没有,那么现在是最好的时间。Python是一种非常流行的编程语言,被包括Google和Facebook在内的许多大型科技巨头所使...

892
来自专栏coding

初识vue

815

扫码关注云+社区