一个多月数据结构与算法的学习经验之谈


今天圣诞节,首先祝大家圣诞节快乐!最近一个多月,一直在Leetcode上学习数据结构与算法,补了很多之前的基础,之后慢慢发现,我对数据结构和算法还停留在很初级阶段,这让我感到异常的恐慌和不安,因为工作都三年多了,对这些基础知识还没办法熟练掌握,实属不该,该好好反思自己这些年来都做了些什么。

听很多初级开发人员说,数据结构和算法在实际开发中用不到,但真实情况是,熟练掌握了这些,无论你用什么语言,都可以轻车熟路。工作三年有余,我的经验已经证明,你会个Vue,会个React,早已无法成为一个开发人员的核心竞争力,因为你会写别人看个文档基本也会写,而且这些技术框架的门槛在慢慢变低,会的人太多了,边际效应逐年递减。

这一个多月的数据结构和算法的学习,更加让我坚信,真正的核心竞争力并不是你掌握什么技术框架,真正的核心还是熟练掌握数据结构和算法。数据结构+算法=程序,这个等式是瑞典计算机科学家 Niklaus Wirth,1976年写在《Algorithms + Data Structures = Programs》一书中,即使拿到40多年后的今天,这个等式仍然成立。不由得感叹,前人早已总结出程序的本质,作为后生,心中满是无尽的敬畏之心,只有不断的学习,才能对得起无数前人的努力,不枉费此生。

说了一些经验之谈,下面把我在数据结构和算法的一些总结贴出来。都是些干货,大部分资源来源于leetcode,一些文章来源于其他平台和我的石墨笔记,练习代码全部用的是C++,语言其实无所谓,关键是核心的设计思想,希望能对一些程序员有一定的积极影响。

笔记仓库地址: github.com/chachaxw/da…

仓库会持续更新,直到练习完leetcode上80%的算法题,代码有什么问题,可以在github上提issue,欢迎关注!

相关文献(Relative Articles)

  1. 维基百科算法大全
  2. 维基百科数据结构大全
  3. 算法的时间与空间复杂度
  4. 数据结构的基本知识总结
  5. 二叉树的遍历详解(前序中序后序层次-递归和非递归)
  6. 视觉直观感受7种常用的排序算法
  7. 素数生成算法
  8. 红-黑树
  9. 堆(Heap)

排序算法(Sorting Algorithm)

  1. 冒泡排序(Bubble Sort)
  2. 选择排序(Selection Sort)
  3. 插入排序(Insertion Sort)
  4. 归并排序(Merge Sort)
  5. 快速排序(Quick Sort)
  6. 堆排序(Heap Sort)
  7. 桶排序(Bucket sort)
  8. 计数排序(Counting Sort)
  9. 基数排序(Radix Sort)
  10. 排序算法大全

常用数据结构(Basic Data Structure)

  1. 链表(Linked List)
  2. 二叉树(Binary Tree)
  3. 霍夫曼编码(Huffman Coding)
  4. 队列(Queue)
  5. 栈(Stack)
  6. 集合(Set)
  7. 哈希表(Map)
  8. 堆(Heap)
  9. 图(Graph)

学习工具(Learning Tools)

  1. LeetCode
  2. 领扣中国
  3. C++教程
  4. 看云数据结构与算法/leetcode/lintcode
  5. 可视化算法Algorithm Visualizer
  6. 旧金山大学数据结构和算法的可视化学习工具
  7. 可视化排序算法Sorting
  8. 动画学习算法和数据结构VisulaGo

LeetCode标签(LeetCode Tags)

  1. 数组
  2. 动态规划
  3. 字符串
  4. 数学

  5. 哈希表
  6. 深度优先搜素
  7. 二分查找
  8. 双指针
  9. 广度优先搜索

  10. 贪心算法
  11. 回溯算法
  12. 设计
  13. 链表
  14. 位运算


  15. 排序
  16. 分治算法
  17. 并查集
  18. 二叉搜索树
  19. 字典树
  20. 递归
  21. 队列
  22. 线段树
  23. Random
  24. 树状数组
  25. 极小化极大
  26. 拓扑排序
  27. 脑筋急转弯
  28. 几何
  29. Map
  30. Rejection Sampling
  31. 蓄水池抽样
  32. 记忆化


你可能感兴趣的:(一个多月数据结构与算法的学习经验之谈)