Leetcode和蓝桥算法思路整理
Leetcode和蓝桥算法思路整理
数据结构
链表
双向链表
循环链表
链表栈
堆链表
栈
堆
队列
二叉树
平衡二叉树
二叉搜索树
平衡二叉搜索树
哈夫曼树
堆—优先队列
最小堆
最大堆
B树
B+树
并查集
红黑树
线段树
邻接表
邻接矩阵
集合
哈希表
有序集合
字典树
数组
二分查找
移除元素
双指针
快慢指针
双向指针
前后指针
区间和
滑动窗口
链表
设计链表
反转链表
删除链表
删除链表倒数第N个结点
链表相交
两两交换链表的结点
约瑟夫问题
环形链表
哈希表
字符串
栈与队列
逆波兰表达式求值
二叉树
dfs
前序遍历
中序遍历
后序遍历
bfs
层序遍历
非递归遍历—迭代法
二叉树 相同 对称 平衡
二叉树最近公共祖先
递归
汉诺塔
分治
回溯算法
暴力剪枝
子集问题
组合数
全排列
N皇后
贪心算法
启发式算法
动态规划
从记忆化搜索到递推
背包
01背包
完全背包
多重背包
线性dp
树形dp
状态机dp
区间dp
滚动数组
编辑距离
图论
图的数据结构实现
dfs
bfs
岛屿问题
Dijastra算法
floyd算法
bellman_ford算法
Spfa算法
a*算法
最小生成树之kruskal算法
最小生成树之prim算法
并查集
有向图—无向图
冗余连接
拓扑排序
枚举右维护左
欧拉质数筛
循环数组
添加哨兵节点:在每个元素的位置列表前后各添加一个哨兵节点。前哨兵是最后一个出现位置减去数组长度,后哨兵是第一个出现位置加上数组长度。这样处理是为了将数组视为循环结构,方便处理边界情况。 for (auto& [_, p] : indices) { // 前后各加一个哨兵 int i0 = p[0]; p.insert(p.begin(), p.back() - n); p.push_back(i0 + n); } 由于 nums 是循环数组:
在下标列表前面添加 4−n=−3,相当于认为在 −3 下标处也有一个 1。 在下标列表末尾添加 0+n=7,相当于认为在 7 下标处也有一个 1
螺旋矩阵套路
有空结合hot100和代码随想录整理
模拟
按层模拟
单调栈套路
单调队列套路
入(元素进入队尾,同时维护队列单调性) 出(元素离开队首) 记录/维护答案(根据队首) 移除最左边的元素 移除最右边的元素 双端队列 在最右边插入元素 单调队列 从队首到队尾单调递减 单调性
总结:及时去掉无用数据,保证双端队列有序 当前数字 >= 队尾,弹出队尾(和单调栈一样) 弹出队首不在窗口内的元素
对角线遍历
3446 51N皇后
BM算法
坏字符规则 1.模式串中没有出现文本串中的那个坏字符d,将模式串整体对齐到这个字符的后方,继续比较 2.模式串有对应的坏字符,而且有两个 让模式串中最靠右的对应字符与坏字符相对 好后缀规则 1.如果模式串中存在已经匹配成功的好后缀,则把目标串与好后缀对齐, 2.如果无法找到匹配好的后缀,找一个匹配的最长的前缀,让目标串与最长的前缀对齐
KMP算法
辗转相除法—gcd—lcm
位运算
数学技巧
博弈论
模拟
排序
1.插入排序 2.冒泡排序 3.选择排序 4.堆排序 5.希尔排序 6.归并排序 7.桶排序 8.基数排序 9.物理排序 10.拓扑排序
例题
回文子串
中心扩展法 本题最容易想到的一种方法应该就是 中心扩散法。 中心扩散法怎么去找回文串? 枚举所有回文中心并且尝试扩展 从每一个位置出发,向两边扩散即可。遇到不是回文的时候结束。举个例子,str=acdbbdaa 我们需要寻找从第一个 b(位置为 3)出发最长回文串为多少。怎么寻找? 首先往左寻找与当期位置相同的字符,直到遇到不相等为止。 然后往右寻找与当期位置相同的字符,直到遇到不相等为止。 最后左右双向扩散,直到左和右不相等。 由于回文子串存在以单个字符和两个连续字符为中心的回文子串所以有两种中心扩展法 dp 状态定义dp[i][j]i到j的字符串是否是回文子串 遍历方向从下到上,从左到右 初始值全为false 递推公式如果dp[i] == dp[j]如果j - i <= 1说明为回文子串,如果dp[i+1][j-1]是回文子串所以dp[i][j]也是回文子串
点赞数据加载中
文档修订记录 8 次修订
- 197fd12 修复大小标题显示失败的bug
- 9a00af8 Fix: apply heading heuristic to 44 existing posts (26+18) - TOC now shows real sections
- edc8d79 博客界面更换 一些笑哦bug维修
- bce812d 6_28飞书文档同步更新
- 8c0c2ac 飞书同步test
- 7d34298 Add manual and sortable library
- 9402175 Improve blog layout and pinned posts
- 98d0f15 Create Hugo blog