今天圣诞节,首先祝大家圣诞节快乐!最近一个多月,一直在Leetcode上学习数据结构与算法,补了很多之前的基础,之后慢慢发现,我对数据结构和算法还停留在很初级阶段,这让我感到异常的恐慌和不安,因为工作都三年多了,对这些基础知识还没办法熟练掌握,实属不该,该好好反思自己这些年来都做了些什么。
听很多初级开发人员说,数据结构和算法在实际开发中用不到,但真实情况是,熟练掌握了这些,无论你用什么语言,都可以轻车熟路。工作三年有余,我的经验已经证明,你会个Vue,会个React,早已无法成为一个开发人员的核心竞争力,因为你会写别人看个文档基本也会写,而且这些技术框架的门槛在慢慢变低,会的人太多了,边际效应逐年递减。
这一个多月的数据结构和算法的学习,更加让我坚信,真正的核心竞争力并不是你掌握什么技术框架,真正的核心还是熟练掌握数据结构和算法。数据结构+算法=程序,这个等式是瑞典计算机科学家 Niklaus Wirth,1976年写在《Algorithms + Data Structures = Programs》一书中,即使拿到40多年后的今天,这个等式仍然成立。不由得感叹,前人早已总结出程序的本质,作为后生,心中满是无尽的敬畏之心,只有不断的学习,才能对得起无数前人的努力,不枉费此生。
说了一些经验之谈,下面把我在数据结构和算法的一些总结贴出来。都是些干货,大部分资源来源于leetcode,一些文章来源于其他平台和我的石墨笔记,练习代码全部用的是C++,语言其实无所谓,关键是核心的设计思想,希望能对一些程序员有一定的积极影响。
笔记仓库地址: github.com/chachaxw/da…
仓库会持续更新,直到练习完leetcode上80%的算法题,代码有什么问题,可以在github上提issue,欢迎关注!
相关文献(Relative Articles)
排序算法(Sorting Algorithm)
- 冒泡排序(Bubble Sort)
- 选择排序(Selection Sort)
- 插入排序(Insertion Sort)
- 归并排序(Merge Sort)
- 快速排序(Quick Sort)
- 堆排序(Heap Sort)
- 桶排序(Bucket sort)
- 计数排序(Counting Sort)
- 基数排序(Radix Sort)
- 排序算法大全
常用数据结构(Basic Data Structure)
学习工具(Learning Tools)
- LeetCode
- 领扣中国
- C++教程
- 看云数据结构与算法/leetcode/lintcode
- 可视化算法Algorithm Visualizer
- 旧金山大学数据结构和算法的可视化学习工具
- 可视化排序算法Sorting
- 动画学习算法和数据结构VisulaGo
LeetCode标签(LeetCode Tags)
- 数组
- 动态规划
- 字符串
- 数学
- 树
- 哈希表
- 深度优先搜素
- 二分查找
- 双指针
- 广度优先搜索
- 栈
- 贪心算法
- 回溯算法
- 设计
- 链表
- 位运算
- 堆
- 图
- 排序
- 分治算法
- 并查集
- 二叉搜索树
- 字典树
- 递归
- 队列
- 线段树
- Random
- 树状数组
- 极小化极大
- 拓扑排序
- 脑筋急转弯
- 几何
- Map
- Rejection Sampling
- 蓄水池抽样
- 记忆化