## 前言
本仓库主要是个人数据结构与算法文章(慢慢优化同步)和力扣剑指offer等题解。内容绝对丰富,欢迎star哦!
本仓库后面还会接纳其他优秀数据结构与算法的文章、题解。如果有问题请联系笔者vx:bigsai66
资源会会整理成pdf送给大家!欢迎大家扫码关注公众号:**bigsai**
![数据结构与算法](assets/数据结构与算法.png)
## 数据结构与算法
**基础线性**
| 标题 | tips | 重要性 |
|--------------------------------| ------------------------------------------------------------ | ------ |
| [绪论基础知识](数据结构与算法/数据结构/数据结构与算法—绪论.md) | 搞懂数据结构相关概念,认清时间复杂度、空间复杂度 | ❤️❤️ |
| [写给小白硬核递归](数据结构与算法/算法/数据结构与算法—递归算法.md) | 从阶乘、斐波那契、汉诺塔搞懂递归,妙用记忆化递归 | ❤️❤️❤️❤️ |
| [图解线性表(顺序表、链表)](数据结构与算法/数据结构/数据结构于算法—线性表.md) | **手写顺序表、链表**,搞懂带头结点、不太头结点链表实现区别。 | ❤️❤️❤️ |
| [图解双链表](数据结构与算法/数据结构/数据结构与算法—双链表.md) | 手写双链表,考虑好节点直接联系(基础,考研重点) | ❤️❤️ |
| [栈,不就后进先出](数据结构与算法/数据结构/数据结构与算法—栈详解.md) | 首先掌握后进先出规则,实现上分别用顺序表和链表考虑区别 | ❤️❤️❤️ |
| [队列,不就先进先出](数据结构与算法/数据结构/数据结构与算法—队列详解.md) | 队列先进先出(FIFO),用**循环数组**和**链表**分别实现 | ❤️❤️❤️ |
| [跳表,会跳的链表](数据结构与算法/数据结构与算法—跳表.md) | 能够了解跳表的增删改查原理和流程 | ❤️❤️ |
| [约瑟夫环问题](数据结构与算法/约瑟夫环问题.md) | 约瑟夫环步步进阶,链表法、List模拟、公式法 | ❤️❤️❤️ |
| | | |
**树**
| 标题 | tips | 重要性 |
|---------------------------------------------------------| -------------------------------------------------------- | ------ |
| [二叉树层序遍历](数据结构与算法/数据结构/数据结构与算法—二叉树的层序遍历.md) | 学会使用队列进行层序遍历,高效解决二叉树之字形(锯齿)遍历 | ❤️❤️❤️ |
| [二叉树前中后遍历](数据结构与算法/数据结构/数据结构与算法—二叉树前序中序后序(递归、非递归)遍历.md) | 学会中序和后序非递归方式遍历 | ❤️❤️❤️❤️ |
| [二叉搜索(查找)树](数据结构与算法/数据结构/数据结构与算法—二叉排序树.md) | 学会二叉查找树查找方式、删除节点逻辑 | ❤️❤️ |
| [二叉平衡(AVL)树](数据结构与算法/数据结构/数据结构与算法—二叉平衡树(AVL树)详解.md) | 了解AVL树左旋、右旋方式,以及RR,RL,LL,LR的平衡方式 | ❤️❤️ |
| [哈夫曼树](数据结构与算法/数据结构与算法—哈夫曼树详解与构造.md) | 了解哈夫曼树weight计算方式、了解哈夫曼编码 | ❤️❤️❤️ |
| [字典(Trie)树](数据结构与算法/数据结构与算法—字典树.md) | 能够手写字典树,熟悉字典树的应用场景和优势, | ❤️❤️ |
| [优先队列](数据结构与算法/硬核!手写一个优先队列.md) | 了解优先队列借助堆运行原理 | ❤️❤️ |
| [并查集(不想交集合)](数据结构与算法/数据结构与算法——并查集(不相交集合).md) | 能够手写并查集,理解压缩路径的优势 | ❤️❤️ |
| [并查集写走迷宫游戏](数据结构与算法/我花了一夜用数据结构给女朋友写个H5走迷宫游戏.md) | **全网爆火**:我花了一夜给女朋友写了个走迷宫游戏 | ❤️❤️❤️❤️ |
| | | |
**其他**
| 标题 | tips | 重要性 |
|----------------------------------------------------------------| ------------------------------------------------------------ | ------ |
| [回溯算法(八皇后)](数据结构与算法/算法/回溯算法-追忆那些年曾难倒我们的八皇后问题.md) | 回溯是一个不断尝试还原的过程,借助递归,经典八皇后问题 | ❤️❤️❤️ |
| [分治算法](数据结构与算法/「五大常用算法」一文搞懂分治算法.md) | 先分后合并,经典二分搜索、快排、归并排序、最近点对等问题 | ❤️❤️❤️ |
| [dfs,bfs搜索](数据结构与算法/算法/数据结构与算法—图论之dfs、bfs(深度优先搜索、广度优先搜索).md) | 深度优先搜索、广度优先搜索,蓝桥杯想拿奖得靠他 | ❤️❤️❤️❤️ |
| [拓扑排序](数据结构与算法/数据结构与算法—拓扑排序.md) | 图论算法,得到一个前后的顺序序列(不唯一) | ❤️❤️ |
| [Dijkstra](数据结构与算法/数据结构与算法—单源最短路径dijkstra算法.md) | 图论单源最短路径,队列+贪心实现 | ❤️❤️ |
| [Floyd](数据结构与算法/短小精悍的多源最短路径算法—Floyd算法.md) | 图论多源最短路径,短小精悍,代码简短但是需要理解 | ❤️❤️ |
| [Prim,Kruskal](数据结构与算法/数据结构与算法—最小生成树(Prim算法和Kruskal算法算法详解).md) | 图论最小生成树,不同贪心策略,Prim基于Dijkstra,Kruskal基于并查集 | ❤️❤️ |
| [全排列系列](数据结构与算法/数据结构与算法—全排列系列.md) | 回溯算法,涉及全排序、排列、子集的重复/不重复情况 | ❤️❤️❤️ |
| [原码反码补码](数据结构与算法/算法/二进制—原码、反码、补码.md) | 二进制基础,原码是给人看的,补码是给计算机看的,反码中间过渡 | ❤️❤️❤️ |
| [经典位运算](数据结构与算法/二进制—位运算.md) | 二进制提高,介绍几种位运算,讲解覆盖大部分经典位运算问题 | ❤️❤️❤️ |
| [求素数(素数筛)](数据结构与算法/数论—素数筛.md) | 数论算法,掌握普通优化、埃氏筛,了解欧拉筛 | ❤️❤️ |
| [快速幂](数据结构与算法/数据结构与算法—这可能是最易懂的快速幂讲解了.md) | 数论算法,掌握非递归、递归写法,了解矩阵快速幂 | ❤️❤️ |
| [大数加减乘除](数据结构与算法/大数算法—加减乘除.md)
bigsai的数据结构与算法、LeetCode图解、剑指offer图解文章专栏,致力于最好懂的数据结构与算法专栏.zip
需积分: 0 117 浏览量
更新于2024-01-01
收藏 17.01MB ZIP 举报
数据结构是计算机科学中的核心概念,它涉及到如何在内存中有效地组织和管理数据,以便进行高效的操作。在编程和算法设计中,理解并熟练运用不同的数据结构至关重要。本压缩包"bigsai的数据结构与算法、LeetCode图解、剑指offer图解文章专栏,致力于最好懂的数据结构与算法专栏.zip"提供了关于数据结构与算法的详细讲解,包括LeetCode题目解析和《剑指Offer》问题的图解,旨在帮助学习者深入理解这些关键概念。
1. **数组**:数组是最基本的数据结构之一,它是一个存储相同类型元素的连续内存区域。数组的优点是访问速度快,但插入和删除操作效率较低,因为可能需要移动大量元素。
2. **链表**:链表解决了数组动态扩展的问题,每个节点包含数据和指向下一个节点的引用。链表分为单链表、双链表和循环链表等,插入和删除操作相对数组更灵活。
3. **栈**:栈是一种后进先出(LIFO)的数据结构,常用于函数调用、表达式求值等场景。常见的操作有push(入栈)、pop(出栈)和peek(查看栈顶元素)。
4. **队列**:队列是一种先进先出(FIFO)的数据结构,常用于任务调度、缓冲区等。主要操作有enqueue(入队)和dequeue(出队)。
5. **哈希表**:哈希表通过哈希函数将键映射到特定位置,实现快速查找。它的平均查找时间复杂度为O(1),但最坏情况下可能出现哈希冲突,需要解决冲突策略,如开放寻址法和链地址法。
6. **树**:树是一种非线性的数据结构,每个节点包含数据和指向子节点的引用。二叉树、平衡树(如AVL树和红黑树)以及搜索树(如B树和B+树)在数据库索引和文件系统中广泛应用。
7. **图**:图由顶点和边组成,用于表示对象之间的关系。图可以是有向或无向,加权或无权重,图的遍历算法(如深度优先搜索和广度优先搜索)在许多问题中都有应用,如社交网络分析和最短路径计算。
8. **堆**:堆是一种特殊的树形数据结构,满足堆性质(如最大堆或最小堆),常用于实现优先队列和优化算法(如堆排序)。
9. **排序算法**:排序是将一组数据按特定顺序排列的过程,常见的排序算法有冒泡排序、选择排序、插入排序、快速排序、归并排序和堆排序等,它们各有优缺点,适用于不同的数据规模和场景。
10. **查找算法**:查找算法的目标是找到特定元素,如二分查找、哈希查找和二叉搜索树查找等。
11. **LeetCode**:LeetCode是一个在线平台,提供编程挑战,尤其是数据结构和算法问题,帮助提升编程技能和准备面试。
12. **剑指Offer**:《剑指Offer》是一本面向程序员面试的书籍,涵盖了众多经典编程面试题,包括数据结构和算法问题,旨在帮助求职者提高解决问题的能力。
这个压缩包的资源将帮助你通过实例和图解深入理解这些概念,并通过LeetCode和《剑指Offer》的练习来提升实际应用能力。不断练习和掌握这些数据结构与算法,对于成为一名优秀的程序员至关重要。