自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeetCode之两数相加

2. 两数相加 - 力扣(LeetCode)

2024-05-18 20:52:45 437

原创 LeetCode之两数之和

1. 两数之和 - 力扣(LeetCode)

2024-05-18 20:26:08 379

原创 蓝桥杯之切割、XYZ

求两数的最小公因数

2024-05-10 23:59:04 495

原创 蓝桥杯之游戏

使用单调队列求出每个区间的最大值和最小值,然后依据题意找规律即可。1.游戏 - 蓝桥云课 (lanqiao.cn)

2024-05-08 23:34:02 350 3

原创 蓝桥杯之赢球票

模拟暴力就可以,但题意很别扭,要仔细读,不然就是连续WA了4次。3.赢球票 - 蓝桥云课 (lanqiao.cn)

2024-05-08 00:09:37 337

原创 AcWing之第154场周赛

仔细阅读此题我们可以发现,无论是切割X轴或者Y轴,它们是互不干扰的,也就是说我们只需找出每次切割后X轴区间的最大值和Y轴区间的最大值即可,我们可以使用map来存以及更新区间最大值。阅读此题,细细思考,我们可以发现要想满足题目中的条件,那么每个子连通图都必须是完全图,那么每个点的度就等于这个连通块点的数量减一,可以使用并查集来维护连通块点的数量。

2024-05-05 01:09:55 365

原创 LeetCode之第395场周赛

在 0 ~ n 中二分 k,若 k 得出的可选子数组数量覆盖了中位数下标,那么 k 就是答案,具体去求可选子数组数量,可以用滑动窗口来求。此题涉及到位运算,需要按位分解,若要让所有元素按位与结果为x,那么如果x此位为1,那么所有元素此位都必须为1,而其他位则随便。由于最多移除两个整数,所以枚举每一种情况。

2024-04-30 18:25:53 313

原创 AcWing第153场周赛

裴蜀定理(或贝祖定理)得名于法国数学家艾蒂安·裴蜀,说明了对任何整数a、b和它们的最大公约数d,关于未知数x和y的线性不定方程(称为裴蜀等式):若a,b是整数,且gcd(a,b)=d,那么对于任意的整数x,y,ax+by都一定是d的倍数,特别地,一定存在整数x,y,使ax+by=d成立。所以我们解决这道题的的基本思想就是,找到其中一些数,使其gcd等于1,然后找最小值可以用01背包来解决。它的一个重要推论是:a,b互质的充分必要条件是存在整数x,y使ax+by=1.贪心对左端点进行排序,然后遍历分组即可。

2024-04-28 11:19:59 499 1

原创 LeetCode之二叉搜索树最近节点查询

由于题目上没说二叉搜索树是平衡的,故如果在最坏情况下,二叉搜索树是一条链的情况下,这时针对每条询问都从上向下遍历的话,时间复杂度会达到O(n^2),会超时。所以我们不如先中序遍历,将树从小到大存起来,然后再针对询问进行二分搜索,最后时间复杂度是O(nlogn)。

2024-04-26 17:13:46 253 3

原创 LeetCode之感染二叉树需要的总时间

读完题目我们可以发现,题目所求解的其实就是从开始点到图中任意点的最大距离,但题目中所给出的二叉树是一个有向图,不支持访问其父节点,所以我们可以先从根节点深度遍历建立无向图,然后可以再次深搜或者也可以广搜,边搜边记录更新当前点到开始点的最大距离,这个最大距离就是感染二叉树的最大时间。

2024-04-25 18:21:58 376 4

原创 最近公共祖先(LCA)详解

1.前言公共祖先问题是指在一个树结构中,找到两个节点的最近公共祖先(Lowest Common Ancestor, LCA)。公共祖先指的是两个节点的某个祖先节点,而最近公共祖先则指的是离这两个节点最近的共同的祖先节点

2024-04-24 22:20:45 879

原创 LeetCode之第394场周赛

先使用Dijstra算法求解起点每一个点的最短距离,然后从终点反向DFS遍历寻找该边是否在最短路径上。Hash表存储是否出现大小写字母的状态,然后枚举即可。使用Hash表存储四个状态,注意状态转移,一遍过即可。

2024-04-22 12:17:33 431

原创 树状数组详解

1.前言正式开始讲解树状数组之前,我们先来思考一个问题,假如给你一个数组a[N],要你完成w次修改和q次查询区间和,这时你该怎么办?如果说直接使用前缀和的话,那么查询操作时间复杂度为O(1),但是修改操作将变为O(n);但是如果不使用前缀和的话,那么查询操作将变为O(n),修改操作将变为O(1)。那有没有一种方法能够将这两种操作兼顾呢,是有的。下面要讲解的树状数组就将这两种操作兼顾了,时间复杂度均为log(n),近乎完美的解决了上述问题。

2024-04-21 12:32:27 1797 1

原创 位运算之异或和之和

1. 异或运算满足交换律和结合律:a^b^c = a^c^b2. 任何数和0进行异或运算,结果还是这个数本身:a^0 = a3. 任何数和自身进行异或运算,结果是0:a^a = 04. 异或运算是可逆的,即对一个数进行两次异或同一个数,结果还是这个数本身:a^b^b = a。

2024-04-20 21:06:40 296

原创 LeetCode之最长有效括号

对于本题,我们可以采用动态规划的思路来解决本题。读懂题意细细思考的话,我们可以发现,只有这个子串以右括号结尾,它才可以称得上有效括号子串,所以我们只需要看右括号就行了。(2)如果s[i-1]是右括号的话,也就是像 ·····)),那么状态是由f[i-1]和f[i-f[i-1]-2]的和再加2转移而来。(1)如果s[i-1]是左括号的话,也就像这样 ·····(),那么毫无疑问状态转移方程一定是。

2024-04-19 00:59:12 396

原创 LeetCode之接雨水

双指针的具体思路是使用两根指针分别指向序列头和序列尾,由于接到雨水的量是由一个坑洼处最低的边界决定的,所以我们要让两头指针中最低的那一端向内移动去寻找更高点(不然接雨水的量永远都被最低端限制,无法增加),倘若左指针小于右指针,我们首先要找到左边的最大值,否则不能接到雨水,然后我们往下面逐步遍历低洼处,逐步计算面积,右指针大于左指针时情况也是相同的。

2024-04-17 20:58:42 348

原创 LeetCode之使括号有效的最少添加

此时如果我们试着从前往后遍历字符串的话,我们就可以发现如果说此时左括号‘(’数量多于右括号的话,我们可以在任意一个(不超过序列第一次左括号多于右括号)位置插入右括号,此时都可以使字符串变成有效字符串。但是如果右括号比左括号数量多,我们就不能在右括号后面位置插入左括号,所以每次遇到右括号比左括号多的时候,就必须在右括号前面插入左括号以变成有效字符串。我们首先细细研读题意,发现只有三种情况A是有效字符串。无论在哪两个位置插入右括号,都能使字符串有效。必须在右括号前面插入左括号以变成有效字符串。

2024-04-16 00:04:43 400

原创 位运算之龟速乘

我们可以把 b写成二进制形式,然后如果某位上为1就加上它a*(2^n)次方(n与这位的位置有关)并且每次计算后取模就可以保证不超出long long的范围。初次看到这道题目,我们可能直接就用高精度来写了,但是这一题也可以使用快速幂的思想来写,第一行输入整数a,第二行输入整数b,第三行输入整数p。求 a 乘 b对 p 取模的值。不懂快速幂的下面附上快速幂的模版。

2024-04-15 16:22:58 235 1

原创 KMP算法详解

KMP算法又称为模式匹配算法,主要是来求一个长的字符串中是否存在相对应的子串。KMP算法可谓是数据结构串中最难的部分了,我也是花费好长时间翻看大量资料才终于理解,最后写下这篇博客,欢迎大家批评指正,最后奉上完整代码,供大家参考学习。int ne[N];void Next(string &s) //下面的ne[]即是next数组ne[0]=-1;//next数组第一个位置不能匹配时无法回溯,故肯定是-1i

2024-03-25 00:14:13 1596

郑州大学数据结构实验报告.docx

ZZU数据结构实验报告,长路漫漫,黑夜很长,光明依旧很远,需要者自取

2024-04-20

空空如也

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

TA关注的人

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