
数据结构与算法
文章平均质量分 77
LeetCode算法分析
ManbaBryant
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构与算法——图论
文章目录1. 拓扑排序1.1 场景1.2 思路1.3 代码 1. 拓扑排序 1.1 场景 对有向无环图(DGA),顶点经过排序后得到一个顶点序列。 对任意节点u、v,若图中存在u --> v的边,则排序后顶点u也应在v前面 1.2 思路 从DGA图中找到一个没有前驱的顶点,输出 删除以这个点为起点的边 重复上述,直到最后一个顶点被输出。如果还有顶点未被输出,则说明有环! (a)a没有前驱节点(入度为0) (b)输出a,删除以a为起点的边(b、c、d入度减1) (c)f、c没有前驱节点,选取原创 2021-01-16 17:19:36 · 346 阅读 · 0 评论 -
数据结构与算法——LeetCode刷题记录
文章目录1. 单调栈2. 区间问题3. 最大子序和4. 滑动窗口5. 优先队列/堆6. 岛屿问题(网格DFS)7. 二分查找8. 栈9. HashSet/HashMap10. 位运算11. 链表12. 二叉树13. 设计类14. 快慢指针15. 回文16. 数字操作17. 双指针18. BFS其他 1. 单调栈 简单 496. 下一个更大元素 I 中等 402. 移掉K位数字 581. 最短无序连续子数组 739. 每日温度 901. 股票价格跨度 1081. 不同字符的最小子序列 困难 4原创 2020-11-24 19:08:10 · 2465 阅读 · 2 评论 -
数据结构与算法——动态规划(DP)
文章目录1. 应用场景2. DP状态2.1 最优子结构2.2 无后效性2.3 解题思路3. 问题类别3.1 线性DP3.1.1 基础模型3.1.1.1 [LeetCode 300. 最长上升子序列](https://leetcode-cn.com/problems/longest-increasing-subsequence/)3.1.1.2 [LeetCode 1143. 最长公共子序列](https://leetcode-cn.com/problems/longest-common-subsequenc原创 2020-11-03 16:56:58 · 1905 阅读 · 0 评论 -
数据结构与算法——中缀表达式与后缀表达式
1. 中缀表达式 给定中缀表达式:1+2*(3+4)-5=10 从左向右遍历,数字1,入栈 操作数栈 1 空 空 空 运算符栈 空 空 空 空 +号,判断运算符栈是否为空,为空,入栈 操作数栈 1 空 空 空 运算符栈 + 空 空 空 数字2,入栈 操作数栈 1 2 空 空 运算符栈 + 空 空 空 *号,判断运算符栈是否为空,不为空,判断当前操作符优先级是否小于或等于栈顶运算符,不是,入栈 操作数栈 1 2 空 空原创 2020-08-12 22:35:29 · 360 阅读 · 0 评论 -
数据结构与算法——正则表达式
1. 字符类 字符 含义 举例 . 匹配任意一个字符 a.可以匹配ab、ac、a1等 [ ] 匹配括号中任意一个字符 [abc]d可以匹配ad、bd、cd - 在[]中表示字符范围 [0-9]a可以匹配0a、1a、2a…9a ^ 匹配输入字符串的开始位置 ^ab匹配以ab开头的字符串 [ ^ ] 在[]中开头,匹配除括号中字符之外的任意一个字符 [ ^xy]1可以匹配a1、b1,但不可以匹配x1、y1 2. 数量限定符 字符 含义 举例 ? 匹配前面的子表原创 2020-10-28 10:09:49 · 505 阅读 · 1 评论 -
数据结构与算法——高级数据结构:字典树/Trie树+线段树+树状数组
文章目录1. 为什么需要字典树2. 什么是字典树 1. 为什么需要字典树 节约空间:10万个只包含小写字母的字符串,采用字典树可以减少内存消耗 节约时间:检索效率高 2. 什么是字典树 根节点不包含字符,每条边代表一个字符 从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串 每个节点的所有子节点包含的字符都不相同 参考链接:https://blog.csdn.net/kuronekonano/article/details/100063157 ...原创 2020-10-12 09:19:49 · 552 阅读 · 0 评论 -
数据结构与算法——高级数据结构:并查集
文章目录1. 思路2. 代码实现3. 例题 1. 思路 参考链接:并查集详解(超级简单有趣~~就学会了) 江湖上大侠太多,将他们的门派使用树结构表示。每个门派的根节点是掌门,任意节点的父节点是自己的直属上级。两个大侠碰到了,需要找到他们的掌门是否是同一个人 江湖上门派太多,总是打架。希望把这些小门派都合并,就不会打架了。 路径压缩:江湖上有门派人数太多,结构太复杂,找掌门需要从叶子节点一层一层向上找。所以将所有大侠都放到同一层,都直接被掌门领导。 2. 代码实现 存放掌门的数组 int[原创 2020-09-30 14:29:49 · 544 阅读 · 0 评论 -
数据结构与算法——Java常用api
1. 栈Stack Stack<Character> stack=new Stack<Character>(); stack.push('c');//入栈 char c=stack.peek();//查看栈顶元素 stack.pop();//出栈 class Stack<E> extends Vector<E> {} 2. Set Set<Integer> set=new HashSet<>(); boolean flag=set.原创 2020-08-14 18:08:52 · 452 阅读 · 0 评论 -
数据结构与算法——字符串匹配之暴力匹配+KMP
文章目录1. 暴力匹配算法2. KMP算法 1. 暴力匹配算法 字符串S a b b a a b b a a b a 匹配结果 模式串P a b b a a b a 不匹配,右移 字符串S a b b a a b b a a b a 匹配结果 模式串P a b b a a b a 不匹配,右移 字符串S a b b a a b b a a b a 匹配结果 模式串P a b b a a b a 不匹配,右移 字符串S原创 2020-07-27 11:52:37 · 305 阅读 · 0 评论 -
数据结构与算法——查找算法总结
文章目录1. 顺序查找2. 分块查找3. 二分查找4. 斐波那契查找5. 插值查找6. 散列/哈希查找7. 树查找7.1 二叉排序树/二叉搜索树/BST树7.2 平衡二叉树/AVL树7.3 红黑树7.4 B树/B+树8. 图查找8.1 BFS8.2 DFS 1. 顺序查找 原理:按顺序比较每个元素,直到找到关键字为止 时间复杂度:O(n) 2. 分块查找 分块查找是顺序查找的优化方法。 原理: 先对索引表进行二分查找或顺序查找,以确定待查记录在哪一块中 然后,在已确定的块中进行顺序查找 3. 二分查找原创 2020-05-14 12:46:29 · 640 阅读 · 0 评论 -
数据结构与算法——排序算法总结
文章目录1. 冒泡排序 术语说明: 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面 不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面 In-place:占用常数内存,不占用额外内存 Out-place:占用额外内存 内排序:所有排序操作都在内存中完成 外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行 1. 冒泡排序 ...原创 2020-05-13 09:32:58 · 333 阅读 · 0 评论 -
数据结构与算法——树结构
文章目录1. 二叉树1.1 定义1.2 分类1.2.1 满二叉树 / 完美二叉树1.2.2 完全二叉树1.2.3 完满二叉树1.2.4 二叉排序树 / 二叉查找树 / 二叉搜索树 Binary Search Tree1.2.5 平衡二叉树 / AVL树 Balanced Binary Tree1.2.6 红黑树2. 多叉树2.1 B树 / B-树2.2 B+树参考链接 1. 二叉树 1.1 定义...原创 2020-04-04 11:13:12 · 889 阅读 · 0 评论 -
数据结构与算法——深度优先搜索(DFS)
深度优先搜索(DFS)算法总结 1.介绍 深度优先搜索属于图算法的一种,是一个针对图和树的遍历算法,英文缩写为DFS即Depth First Search。深度优先搜索是图论中的经典算法,利用深度优先搜索算法可以产生目标图的相应拓扑排序表,利用拓扑排序表可以方便的解决很多相关的图论问题,如最大路径问题等等。一般用堆数据结构来辅助实现DFS算法。其过程简要来说是对每一个可能的分支路径深入到不能再深入...原创 2019-12-28 21:31:27 · 2434 阅读 · 0 评论 -
数据结构与算法——分治算法
分治算法总结 分治法由两部分组成: 分:递归解决较小的问题 治:然后从子问题的解构建原问题的解 传统上,至少包含两个递归调用的程序才叫做分治算法。一般分出来的子问题不相交。 例题一:Leetcode53. 最大子序和 算法分析: 将区间等分。最大子序和要么是左半区间的子序和,要么是右半区间的子序和,要么横跨两端 当最大子数组有 n 个数字时: 若 n==1,返回此元素 left_...原创 2019-12-24 10:45:54 · 577 阅读 · 0 评论