自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 求解固定长度的回文子序列数目

求解固定长度回文自序列数目

2022-11-27 16:18:58 278 1

原创 区间合并算法

前言: 最近都在忙毕设和论文,已经好久没有写博客了。今天打周赛的时候遇到了区间合并的问题,前来记录一下。区间合并算法对于单次的区间合并,可以使用差分算法一次遍历即可,当区间范围在 [0,1018][0, 10^{18}][0,1018] 的时间复杂度为 nlognnlognnlogn但是对于多区间问题,使用上述算法肯定会超时,因此这里来介绍一个 nlognnlognnlogn 的区间合并与修改的算法模板。/*** * @author : Laugh * 适用范围 :

2022-05-15 16:20:51 286

原创 二叉树的三种遍历 (递归+迭代)

前言:真的好久没有写博客了。最近也到春招季了,想必很多小伙伴在准备面试了,因此想着来写一篇关于二叉树遍历的博客。同时也希望大家:山水万程,皆有好运!定义树结构:struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {}};递归版本:普通写法void dfs(TreeNode *root){

2022-03-12 15:01:55 1737 1

原创 并查集模板

并查集模板

2022-01-31 11:21:05 609

原创 C++ 利用 istringstream 实现字符串分割

前言:今日遇到了需要对字符串进行分割的题目,由于 C++ 里没有内置的 split() 函数,所以前来贴出模板。代码模板:vector<string> split(string &s){ istringstream iss(s); vector<string> strs; string temp; while(getline(iss, temp, '/')){ strs.emplace_back(move(temp)); } return

2022-01-25 10:00:12 899

原创 LIS (一维和二维) 与 LCS的时间优化

最长递增子序列 (一维和二维) 以及 LCS优化

2022-01-12 10:31:48 436

原创 图的离散化 (LeetCode 1036)

前言:[ 最近遇到了很多新的知识点 所以写博客的频率也比较频繁 ] 今天遇到了图的离散化相关的题目,由于很早就听说过这个词,但是一直没有真正了解,因此前来记录一下离散化离散化的本质就是在 不改变数据间大小关系 的前提下,把较大范围的数据映射到较小的数据空间,从而保证了可以在有限的时间和空间复杂度内完成搜索那对于图的离散化也是相同的:对于一个大范围的图,在不破坏图的结点间联通性的情况下,将有有效节点变得 相对密集,从而缩小图的范围概念总是抽象的,我们来看一道题参悟参悟题目分

2022-01-11 11:45:55 734

原创 前缀和与差分数组 (一维和二维)

前言:今天写题目的时候遇到了一个二维差分的题目,由于之前没有接触过,因此前来记录一下前缀和差分通常需要和前缀和一起使用才能发挥奇效,所以我们先来介绍一下前缀和。一维前缀和:对于一个长度为 nnn 的数组 arrarrarr , 前缀和数组的定义为 sum[i+1]=sum[i]+arr[i]sum[i + 1] = sum[i] + arr[i]sum[i+1]=sum[i]+arr[i], 其中 i∈[0,n)i \in [0, n)i∈[0,n).二维前缀和:对于一个行数为 mmm 列

2022-01-10 21:35:18 507

原创 关于C++中对set和multiset进行二分查找 (LeetCode 220)

前言:今天碰到了一题关于滑动窗口+二分查找的题目,用C++做题时需要使用multiset,因此前来贴出模板,望能供大家参考。题目这里贴出原题:LC 220. 存在重复元素 III 供大家测试代码使用题目解析: 本道题如果使用其他方法可能会将题目复杂化,但是如果使用滑动窗口却会非常直观:由于题目需要找两个下标不同的元素,所以我们可以将 nums[0]nums[0]nums[0] 插入集合后,枚举窗口右边界的下标 i(i∈[1,n−1])i (i\in[1, n - 1])i(i∈[1,n−1]),同

2022-01-08 21:05:31 2080

原创 双向单调栈模板

前言:今日遇到了双向单调栈的题,这里放出模板和题目,以备之后使用简单介绍:单调栈的初始目的就是求在一个方向上小于 (或小于等于) 自身的第一个元素的值 (或下标),而双端单调栈便是分别求左右两边。双向单调栈在使用时需要注意一些边界条件,同时配合 前缀和 与 枚举 使用会有奇效。(不信你做题看看)题目:LeetCode 84,LeetCode 1576, LeetCode 907代码模板vector<int> L(n), R(n);// Calculate the array L

2022-01-01 18:05:26 2962

原创 C++ 优先队列的三种声明方式

C++ priority_queue (优先队列) 的三种声明方式

2021-12-24 21:39:59 1015

原创 针对多个子序列存在性的判断 (LeetCode 792)

前言:对于两个字符串 sss 和 ttt,若要判断 ttt 是否是 sss 的子序列,相信大家都不会陌生,一个 O(n)O(n)O(n) 的遍历或加上双指针的优化,都能很快地结果。但是,若要判断一系列字符串 wordswordswords 中有几个是 sss 的子序列呢?这时候就需要引入一个新的算法:滚动字典桶先来说一说 滚动字典桶 这个新名词:其实这个词是我自己发明的,主要有三个关键词:滚动 + 字典 + 桶。滚动是因为其不像字典树那样需要根据字符串的长度不断创建新节点,而是可以不断复用数组。字典

2021-12-11 15:37:57 197

原创 滑动窗口的最值处理以及延伸思考

前言:一直以来,对于一个给定长度为 nnn 的数组,都不知道应该如何求任意两个下标间的最小值,今天刚好碰到了这道题,也算是给我上了一课????我们简化问题:对于长度为 kkk 的窗口,求任意窗口间的最小值。之后只需要把窗口的范围变为 [2,n][2, n][2,n] 即可。方法一:基于最大堆class Solution {public:using PII = pair<int, int>; vector<int> minSlidingWindow(vecto

2021-12-10 10:34:09 82

原创 Java 学习大纲

Java学习大纲

2021-12-09 10:22:43 713

原创 中缀表达式的延迟处理方式

基于中缀表达式的计算模板

2021-12-09 10:21:05 389

原创 单调栈模板

单调栈模板代码

2021-12-09 10:19:46 279

原创 数据结构 — 排序

八大排序的代码模板

2021-12-09 10:17:12 448

原创 大数定律和中心极限定理

关于大数定律的详细解释

2021-12-09 10:14:19 661

原创 左右边界二分查找详解与标准模板

关于标准二分查找和左右边界二分查找的正确写法

2021-12-09 10:07:44 307

原创 快速幂模板

C++/C 快速幂模板

2021-12-09 10:05:46 85

原创 计算机网络复习总览

计算机网络复习大纲

2021-12-09 09:56:59 242

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除