代码改变世界

谈算法与数据结构的学习

2019-11-10 21:05  bangerlee  阅读(741)  评论(0编辑  收藏  举报

算法与数据结构曾是我薄弱的一块,甚至产生过畏难情绪、一度怀疑自己是否能够掌握这方面技能。

 

18年8月,我下决心通过做LeetCode题目去理解常用算法和数据结构,并掌握它们的应用方法。

 

一年多的时间里,总共完成1,000+道题,为加深对不同算法的理解,部分题目用不同方式做了2~3遍。从刚开始刷简单题目都觉得困难,到现在能较顺利完成中等难度的题目。

 

过程中对各种常见算法和数据结构的应用套路作了总结:

数组(Array)

链表(List)

哈希表(HashTable)

堆栈(Stack)

队列(Queue)

堆和优先级队列(Heap and Priority Queue)

二叉树(Binary Tree)

二叉查找树(Binary Search Tree)

字典树(Trie)

图(Graph)

----

双指针(Two Pointers)

滑动窗口(Sliding Window)

排序(Sort)

递归(Recursion)

贪心(Greedy)

分治法(Divide and Conquer)

折半查找(Binary Search)

回溯(Backtracking)

深度优先搜索(DFS)

广度优先搜索(BFS)

合并查找(Union Find)

拓扑排序(Topological Sort)

位运算(Bit Manipulation)

 

学习算法和数据结构,其本身有很多难的知识点,需要理解、消化与掌握。更重要地,克服自己的畏难情绪,面对一项我们迫切想掌握的知识与技能,一点点做起。

 

干就完事了