本仓库主要是个人数据结构与算法文章(慢慢优化同步)和力扣剑指offer等题解。内容绝对丰富,欢迎star哦!
本仓库后面还会接纳其他优秀数据结构与算法的文章、题解。如果有问题请联系笔者vx:bigsai66
资源会会整理成pdf送给大家!欢迎大家扫码关注公众号:bigsai
基础线性
标题 | tips | 重要性 |
---|---|---|
绪论基础知识 | 搞懂数据结构相关概念,认清时间复杂度、空间复杂度 | ❤️❤️ |
写给小白硬核递归 | 从阶乘、斐波那契、汉诺塔搞懂递归,妙用记忆化递归 | ❤️❤️❤️❤️ |
图解线性表(顺序表、链表) | 手写顺序表、链表,搞懂带头结点、不太头结点链表实现区别。 | ❤️❤️❤️ |
图解双链表 | 手写双链表,考虑好节点直接联系(基础,考研重点) | ❤️❤️ |
栈,不就后进先出 | 首先掌握后进先出规则,实现上分别用顺序表和链表考虑区别 | ❤️❤️❤️ |
队列,不就先进先出 | 队列先进先出(FIFO),用循环数组和链表分别实现 | ❤️❤️❤️ |
跳表,会跳的链表 | 能够了解跳表的增删改查原理和流程 | ❤️❤️ |
约瑟夫环问题 | 约瑟夫环步步进阶,链表法、List模拟、公式法 | ❤️❤️❤️ |
树
标题 | tips | 重要性 |
---|---|---|
二叉树层序遍历 | 学会使用队列进行层序遍历,高效解决二叉树之字形(锯齿)遍历 | ❤️❤️❤️ |
二叉树前中后遍历 | 学会中序和后序非递归方式遍历 | ❤️❤️❤️❤️ |
二叉搜索(查找)树 | 学会二叉查找树查找方式、删除节点逻辑 | ❤️❤️ |
二叉平衡(AVL)树 | 了解AVL树左旋、右旋方式,以及RR,RL,LL,LR的平衡方式 | ❤️❤️ |
哈夫曼树 | 了解哈夫曼树weight计算方式、了解哈夫曼编码 | ❤️❤️❤️ |
字典(Trie)树 | 能够手写字典树,熟悉字典树的应用场景和优势, | ❤️❤️ |
优先队列 | 了解优先队列借助堆运行原理 | ❤️❤️ |
并查集(不想交集合) | 能够手写并查集,理解压缩路径的优势 | ❤️❤️ |
并查集写走迷宫游戏 | 全网爆火:我花了一夜给女朋友写了个走迷宫游戏 | ❤️❤️❤️❤️ |
其他
标题 | tips | 重要性 |
---|---|---|
回溯算法(八皇后) | 回溯是一个不断尝试还原的过程,借助递归,经典八皇后问题 | ❤️❤️❤️ |
分治算法 | 先分后合并,经典二分搜索、快排、归并排序、最近点对等问题 | ❤️❤️❤️ |
dfs,bfs搜索 | 深度优先搜索、广度优先搜索,蓝桥杯想拿奖得靠他 | ❤️❤️❤️❤️ |
拓扑排序 | 图论算法,得到一个前后的顺序序列(不唯一) | ❤️❤️ |
Dijkstra | 图论单源最短路径,队列+贪心实现 | ❤️❤️ |
Floyd | 图论多源最短路径,短小精悍,代码简短但是需要理解 | ❤️❤️ |
Prim,Kruskal | 图论最小生成树,不同贪心策略,Prim基于Dijkstra,Kruskal基于并查集 | ❤️❤️ |
全排列系列 | 回溯算法,涉及全排序、排列、子集的重复/不重复情况 | ❤️❤️❤️ |
原码反码补码 | 二进制基础,原码是给人看的,补码是给计算机看的,反码中间过渡 | ❤️❤️❤️ |
经典位运算 | 二进制提高,介绍几种位运算,讲解覆盖大部分经典位运算问题 | ❤️❤️❤️ |
求素数(素数筛) | 数论算法,掌握普通优化、埃氏筛,了解欧拉筛 | ❤️❤️ |
快速幂 | 数论算法,掌握非递归、递归写法,了解矩阵快速幂 | ❤️❤️ |
大数加减乘除 | 能够手写大数加法、减法、乘法,了解大数除法思想 | ❤️❤️❤️ |
十大排序
标题 | tips | 重要性 |
---|---|---|
冒泡排序、快速排序 | 交换类排序 | ❤️❤️❤️❤️ |
插入排序、希尔排序 | 插入类排序 | ❤️❤️ |
归并排序 | 归并类排序 | ❤️❤️❤️❤️ |
简单选择排序、堆排序 | 选择类排序 | ❤️❤️❤️ |
桶排序 | 桶类排序 | ❤️❤️ |
计数排序 | 桶类排序 | ❤️❤️❤️ |
基数排序 | 桶类排序 | ❤️❤️ |
十大排序汇总 | 搞清各种排序之间的区别 | ❤️❤️❤️❤️ |
双轴快排 | 快排的优化 | ❤️❤️ |
- LeetCode 01两数相加 数组 哈希
- LeetCode 02两数之加 链表 数学
- LeetCode 03无重复字符的最长子串 哈希 双指针 滑动窗口 字符串
- LeetCode 04寻找两个正序数组的中位数(困难)二分法数组 二分 分治
- LeetCode 05最长回文子串字符串(中心扩散) 马拉车(待补充)
- LeetCode 06Z字形变换 字符串
- LeetCode 07整数反转 数学
- LeetCode 08字符串转整数 数学 字符串
- LeetCode 09回文数 数学
- LeetCode 10正则表达式匹配 dp 字符串
- LeetCode 11盛水最多的容器 数组 双指针
- LeetCode 12整数转罗马数字.md 数学 字符串
- LeetCode 13罗马数字转整数.md 数学 字符串
- LeetCode 14最长公共前缀.md 字符串
- LeetCode 15三数之和(双指针).md 数组 双指针
- LeetCode 16最接近的三数之和.md 数组 双指针
- LeetCode 17电话号码的字母组合.md 字符串 回溯
- LeetCode 18四数之和.md 数组 哈希 双指针
- LeetCode 19删除链表的倒数第N个节点.md 链表 双指针
- LeetCode 20有效的括号.md 栈 字符串
- LeetCode 21合并两个有序列表.md 链表
- LeetCode 22括号生成.md 字符串 回溯算法
- LeetCode 23合并K个升序链表.md 排序 链表
- LeetCode 24两两交换链表中的节点.md 链表
- LeetCode 25K个一组翻转链表.md 链表
- LeetCode 26删除排序数组中的重复项.md 数组 双指针
- LeetCode 27移除元素.md 数组 双指针
- LeetCode 28实现strStr().md 字符串(kmp sunday)
- LeetCode 29两数相除.md 数组 二分
- LeetCode 30串联所有单词得字串.md 哈希 双指针 字符串
- LeetCode 31下一个排列.md 数组 数学(全排列)
- LeetCode 32最长有效括号(困难).md 字符串 数组(栈)
- LeetCode 33搜索旋转排序数组.md 数组 二分查找
- LeetCode 34在排序数组中查找元素的第一个和最后一个位置.md 数组 二分查找
- LeetCode 35搜索插入位置.md 数组 二分查找
- LeetCode 36有效的数独.md 哈希
- LeetCode 37解数独.md 哈希 回溯
- LeetCode 38外观数列.md 字符串(模拟过程)
- LeetCode 39组合总和.md 数组 回溯
- LeetCode 40组合总数(回溯).md 数组 回溯
- LeetCode 41缺失的第一个正数.md 数组(妙用)
- LeetCode 42接雨水.md 栈 数组 双指针
- LeetCode 43字符串相乘.md 数组 字符串(模拟)
- LeetCode 44通配符匹配.md 贪心 字符串 dp
- LeetCode 45跳跃游戏.md 贪心 数组
- LeetCode 46全排列.md 回溯 递归
- LeetCode 47全排列Ⅱ.md 回溯 递归
- LeetCode 48旋转图像.md 数组 (模拟)
- LeetCode 49字母异位词分组.md 哈希 字符串
- LeetCode 50Pow(x,n).md 数学(快速幂) 二分
- LeetCode 51N皇后.md 回溯
- LeetCode 52n皇后Ⅱ.md 回溯
- LeetCode 53最大子序列和.md 数组 分治 dp
- LeetCode 54螺旋矩阵.md 数组(模拟)
- LeetCode 55跳跃游戏.md 贪心 数组
- LeetCode 56合并区间.md 排序 数组
- LeetCode 57插入区间.md 排序 数组
- LeetCode 58最后一个单词长度.md 字符串
- LeetCode 59螺旋矩阵Ⅱ.md 数组(模拟)
- LeetCode 60排列序列.md 数学(全排列)
- LeetCode 61旋转链表.md 链表 双指针
- LeetCode 62不同路径.md 数组 dp
- LeetCode 63不同路径Ⅱ.md 数组 dp 搜索
- LeetCode 64最小路径和.md 数组 dp
- LeetCode 65有效数字.md 数组 字符串 (状态机)
- LeetCode 66加一.md 数组
- LeetCode 67二进制求和.md 数学 字符串
- LeetCode 68文本左右对齐.md 字符串
- LeetCode 69x的平方根实现.md 二分查找
- LeetCode 70爬楼梯.md 动态规划
- LeetCode 71简化路径.md 栈 字符串
- LeetCode 72编辑距离(dp).md 动态规划
- LeetCode 73矩阵置零.md 数组 原地算法
- LeetCode 74搜素二维矩阵.md
- LeetCode 75颜色分类.md
- LeetCode 76最小覆盖子串.md
- LeetCode 77组合.md
- LeetCode 78子集.md
- LeetCode 79单词搜索.md
- LeetCode 80删除排序数组中的重复项2.md
- LeetCode 81搜索旋转排序数组2.md
- LeetCode 29两数相除
- LeetCode 51N皇后
- LeetCode 22括号生成
- LeetCode 10正则表达式匹配(动态规划)
- LeetCode 60排列序列
- LeetCode 46全排列
- LeetCode 34在排序数组中查找元素的第一个和最后一个位置
- LeetCode 30串联所有单词得字串
- LeetCode 37解数独
- LeetCode 47全排列Ⅱ
- LeetCode 17电话号码的字母组合
- LeetCode 39组合总和
- LeetCode 52n皇后Ⅱ
- LeetCode 33搜索旋转排序数组
- LeetCode 44通配符匹配
- LeetCode 29两数相除
- LeetCode 31下一个排列
- LeetCode 06Z字形变换
- LeetCode 07整数反转
- LeetCode 13罗马数字转整数
- LeetCode 02两数之加
- LeetCode 50Pow(x,n)
- LeetCode 60排列序列
- LeetCode 09回文数
- LeetCode 43字符串相乘
- LeetCode 08字符串转整数
- LeetCode 12整数转罗马数字
- LeetCode 67二进制求和.md
- LeetCode 27移除元素
- LeetCode 28实现strStr()
- LeetCode 03无重复字符的最长子串(滑动窗口)
- LeetCode 16最接近的三数之和
- LeetCode 15三数之和(双指针)
- LeetCode 19删除链表的倒数第N个节点
- LeetCode 42接雨水
- LeetCode 18四数之和
- LeetCode 30串联所有单词得字串
- LeetCode 61旋转链表
- LeetCode 11盛水最多的容器
- LeetCode 26删除排序数组中的重复项
- LeetCode 29两数相除
- LeetCode 04寻找两个正序数组的中位数(困难)二分法
- LeetCode 35搜索插入位置
- LeetCode 50Pow(x,n)
- LeetCode 34在排序数组中查找元素的第一个和最后一个位置
- LeetCode 33搜索旋转排序数组
- LeetCode 44通配符匹配
- LeetCode 69x的平方根实现.md
- LeetCode 64最小路径和
- LeetCode 10正则表达式匹配(动态规划)
- LeetCode 53最大子序列和
- LeetCode 44通配符匹配
- LeetCode 70爬楼梯.md
- LeetCode 72编辑距离(dp).md
- LeetCode 25K个一组翻转链表
- LeetCode 21合并两个有序列表
- LeetCode 19删除链表的倒数第N个节点
- LeetCode 02两数之加
- LeetCode 61旋转链表
- LeetCode 24两两交换链表中的节点
- LeetCode 23合并K个升序链表
- LeetCode 03无重复字符的最长子串(滑动窗口)
- LeetCode 01两数之和
- LeetCode 49字母异位词分组
- LeetCode 36有效的数独
- LeetCode 18四数之和
- LeetCode 30串联所有单词得字串
- LeetCode 37解数独
- LeetCode 58最后一个单词长度
- LeetCode 14最长公共前缀
- LeetCode 20有效的括号
- LeetCode 03无重复字符的最长子串(滑动窗口)
- LeetCode 06Z字形变换
- LeetCode 65有效数字
- LeetCode 22括号生成
- LeetCode 10正则表达式匹配(动态规划)
- LeetCode 49字母异位词分组
- LeetCode 05最长回文子串
- LeetCode 13罗马数字转整数
- LeetCode 38外观数列
- LeetCode 30串联所有单词得字串
- LeetCode 43字符串相乘
- LeetCode 08字符串转整数
- LeetCode 12整数转罗马数字
- LeetCode 32最长有效括号(困难)
- LeetCode 17电话号码的字母组合
- LeetCode 44通配符匹配
- LeetCode 28实现 strStr()
- LeetCode 67二进制求和.md
- LeetCode 68文本左右对齐.md
- LeetCode 71简化路径.md
- LeetCode 27移除元素
- LeetCode 31下一个排列
- LeetCode 04寻找两个正序数组的中位数(困难)二分法
- LeetCode 40组合总数(回溯)
- LeetCode 64最小路径和
- LeetCode 35搜索插入位置
- LeetCode 01两数之和
- LeetCode 16最接近的三数之和
- LeetCode 15三数之和(双指针)
- LeetCode 63不同路径Ⅱ
- LeetCode 65有效数字
- LeetCode 42接雨水
- LeetCode 66加一
- LeetCode 56合并区间
- LeetCode 53最大子序列和
- LeetCode 18四数之和
- LeetCode 34在排序数组中查找元素的第一个和最后一个位置
- LeetCode 59螺旋矩阵Ⅱ
- LeetCode 11盛水最多的容器
- LeetCode 55跳跃游戏
- LeetCode 54螺旋矩阵
- LeetCode 57插入区间
- LeetCode 41缺失的第一个正数
- LeetCode 45跳跃游戏
- LeetCode 39组合总和
- LeetCode 26删除排序数组中的重复项
- LeetCode 48旋转图像
- LeetCode 62不同路径
- LeetCode 33搜索旋转排序数组
- LeetCode 73矩阵置零.md
- LeetCode 167两数之和② 双指针
- LeetCode 152 乘积最大子数组 动态规划
- LeetCode 198 打家劫舍 动态规划
- LeetCode 213 打家劫舍② 动态规划
- LeetCode 377 打家劫舍③ 动态规划 (树形DP)
资源会优先在公众号发布,本文档后期也会整理成pdf送给大家!欢迎大家扫码关注公众号:bigsai