本文转载自微信公众号「roseduan写字的地方」,作者roseduan。转载本文请联系roseduan写字的地方公众号。
今天分享的是一些数据结构和算法的项目,在我自己学习 Go 语言的时候,在掌握基础的语法知识之后,会针对性的刷一些 leetcode 题目,借此来巩固自己的语法知识,然后也能够保持解算法题目的感觉,可谓是一举两得吧。
所以从下面这些优秀的项目中,一定能够找适合你的项目哦!
1、GoDS
Github 地址:https://github.com/emirpasic/gods
Star 数量:9.9k
Go Data Structures,实现了常见的数据结构,可直接引入到实际的项目中使用,包含链表、栈、哈希表、树等等,命名风格和 Java 中的类名比较相似(估计作者受 Java 的影响颇深哈哈),比如有:
- ArrayList
- ArrayStack
- HashSet
- TreeSet
- LinkedHashSet
- RedBlackTree
当然你也可以用来学习数据结构,看看大牛的代码是怎么写的。
2、go-datastructures
Github 地址:https://github.com/Workiva/go-datastructures
Star 数量:6k
和上面的项目类似,这也是一个用 Go 语言实现各种数据结构的一个项目,只不过它支持的数据结构更加多样化,除了一些基础的,还有 BitArray、BTree、斐波那契堆、图、AVL 树、前缀树等等一些高级数据结构。
如果你想挑战一下比较有难度的数据结构,那么在这个项目应该能找到你可以学习或者借鉴的代码。
3、TheAlgorithms/Go
Github 地址:https://github.com/TheAlgorithms/Go
Star 数量:5.3k
这是 TheAlgorithms 系列的 Go 语言实现,我们知道 TheAlgorithms 系列有很多语言的版本,比如 Python、Java、Go、C++、JavaScript 等等。
这个项目比较适合用来学习,有很多基础的算法的示例,比如数学、二分查找、排序、字符串匹配,还有一些练手的算法题目。
4、algorithm-pattern
Github 地址:https://github.com/greyireland/algorithm-pattern
Star 数量:11.5k
这个项目主要是介绍了一些通用的刷题模板,以及一些常见问题,如到底要刷多少题,按什么顺序来刷题,如何提高刷题效率等。
作者总结的模板非常全面,讲解也很细致。
比较适合用来临时刷算法,应对面试,所以即便不是学习 Go 语言的同学,也能够从中获取到一些刷题的经验等。
项目中还有一些书籍推荐,文档也非常的全面。
5、LeetCode-Go
Github 地址:https://github.com/halfrost/LeetCode-Go
Star 数量:17.4k
顾名思义,这是一个使用 Go 语言实现 Leetcode 题目的项目,比较偏向于解题实战。
目前项目已经收录了 600+ leetcode 题目,并且针对每一道题目,都有详细的解题思路,并且有完整的代码实现。
项目还有配套的电子书,文档,可以说是非常 nice 了!
6、hoanhan101/algo
Github 地址:https://github.com/hoanhan101/algo
Star 数量:3k
这个项目是作者总结的,在面试过程当中最容易遇到的一些算法面试题目,配有详细的代码实现,只不过是全英文的,英文比较好的同学可以尝试学习一下。
7、shady831213/algorithms
Github 地址:https://github.com/shady831213/algorithms
Star 数量:504
这个项目实现了一些常用的算法和数据结构,比如动态规划、贪心算法、图、树、堆等等,代码比较简洁清晰,值得学习。