在谷歌、微软(Microsoft)、亚马逊(Amazon)、Facebook和苹果(Apple)等顶级科技公司的面试中,都很大程度地强调了他们对数据结构和算法的重视程度,在这些面试中取得成功的唯一方法是对所有基本算法、数据结构和编程技术(如递归、位操作等)有深入的了解。 今天,我将分享一些关于数据结构和算法的最好的免费课程,这些都是免费在线课程,你在闲暇时间都能观看。 1、Easy to Advanced Data Structures
这是最好的数据结构和算法课程之一,并且还是免费的,课程时长为8小时,涵盖了简单的数据结构基础知识,你将了解数组,链表,动态数组,堆栈,队列,双链表,优先级队列,哈希表,二叉搜索树,Fenwick树/二叉索引树,AVL树,索引优先级队列。简而言之,这是一个学习数据结构和算法的完整指南。 课程地址:https://www.udemy.com/course/introduction-to-data-structures/ 2、Algorithms Notes for Professionals book
这本免费的数据结构和算法书籍是在2019年出版的,一共200多页,这本书由Stack Overflow的美女们写的,你可以从GoalKicker.com下载PDF文档,非常简单。简而言之,这是2019年免费学习数据结构和算法的最佳资源之一。 下载地址:https://goalkicker.com/AlgorithmsBook/ 3、Algorithms Part 1 --- Coursera
这是Coursera上另一门关于算法的优秀课程,该课程涉及到的概念与语言无关,虽然所有解决方案都是用Java完成的。 本课程分为两部分,第一部分是介绍基本的数据结构、排序和搜索算法,第二部分介绍图形和字符串处理算法,该课程由普林斯顿大学免费提供,导师Kevin Wayne 和 Robert Sedgewick都是行业专家,Robert Sedgewick也写了一本算法的书,是学习Java数据结构和算法的最好的书之一。 课程地址:https://www.coursera.org/learn/algorithms-part1 4、Graph Theory Algorithms
许多在线课程都不愿意介绍图形算法,因为它很复杂,不容易学习和实现,而这正是它变得日益重要的原因。许多现实世界的问题都可以用图形算法来解决,比如城市和航线之间的最短路径。现在好了,这门课程就是专门介绍图形算法。 通过该课程你将了解图的遍历算法,比如深度优先遍历、层次遍历、迪杰斯特拉算法、拓普排序算法、贝尔曼-福特算法、Floyd-Warshall 全源最短路径算法、强连通、强连通图、强连通分量Tarjan算法等。 课程地址:https://www.udemy.com/course/graph-theory-algorithms/ 5、Data Structure --- Part I
这是一个初学者的课程,学习使用Java语言设计、实现和分析基本数据结构。介绍了动态数组、链表、堆栈、队列和二叉树等内容。此外,该课程还有第二部分,但那不是免费的。 课程地址:https://www.udemy.com/course/data-structures-part-1-lognacademy/ 6、Data Structures Concepts & Singly Linked List Implementation
这是一个短期的课程,学习基本的数据结构,如数组,链表,堆栈,队列等,学习如何使用C语言实现各种链表操作,如查找节点、添加节点、删除节点、添加节点、遍历链表等。你还将学习解决一些常见的基于链表的编码问题,如在链表末尾插入节点、在链表开头插入节点等。 课程地址:https://www.udemy.com/course/data-structures-in-c/ 7、Introduction to Algorithms and Data structures in C++
这门课程很适合学习C++基本的数据结构和算法,讲师Andrei Margeloiu在解决算法问题方面有着丰富的经验,曾多次在谷歌和Facebook组织的编码比赛并获奖。在本课程中,你不仅要学习基本的数据结构,如数组、链表、堆栈和队列,而且还要学习解决算法问题的实用技术。 此外,Andrei Margeloiu还介绍了如何调试和分析算法复杂度,并使用大量图表分析,简而言之,这是一个很好的免费课程,我自己就从该课程里学到了一些很好的技巧。 课程地址:https://www.udemy.com/course/introduction-to-algorithms-and-data-structures-in-c/ 8、Data Structures in Java for Noobs
本课程与之前的课程非常相似,它比较侧重于链表,你可以学到所有的链表操作,并学习如何使用Java编程语言实现它,比如添加节点、删除节点等。简而言之,这是一个介绍链表数据结构的段课程。 课程地址:https://www.udemy.com/course/data-structures-in-java-for-noobs-lite-edition-algorithms-beginners/ 9、Getting Interview Ready --- Data Structures
如果你正在为面试做准备,并且没有太多的时间,那就选择这个课程,该课程时长只有三小时,在这三个小时里,你不仅要学习数组、链表、二叉树、二叉搜索树、堆栈、队列、AVL和splay树的基础知识,还要解决一些编码问题,学习一些编程面试技巧。 课程地址:https://www.udemy.com/course/getting-interview-ready-data-structures/ 10、Algorithms and Data Structures --- Part 1