自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【九十一】【算法分析与设计】单调队列成为答案的可能性,862. 和至少为 K 的最短子数组,1499. 满足不等式的最大值,1499. 满足不等式的最大值

给你一个整数数组nums和一个整数k,找出nums中和至少为k的,并返回该子数组的长度。如果不存在这样的,返回-1。是数组中的一部分。1-131.单调队列里面存储的是可能成为答案的子数组的开头下标.对于每一个想要进入单调队列的位置,匹配单调队列里面队头的元素.单调队列里面存储前缀和下标,严格按照前缀和队头到队尾前缀和从小到大.

2024-05-13 11:07:05 728

原创 【九十】【算法分析与设计】单调队列,239. 滑动窗口最大值,1438. 绝对差不超过限制的最长连续子数组,[USACO12MAR] Flowerpot S

给你一个整数数组nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的k个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。滑动窗口的位置 最大值 --------------- ----- [1 3 -1] -3 5 3 6 7[1]1.利用递归的思维去写迭代,结合while循环,将出口条件写入while循环判断里面,对于每一个出口条件两两之间是&&连接.其次对于每一个单独的出口条件前面都需要加上一个取反!2.利用单调队列存储区间中最大值信息.

2024-05-12 15:20:15 636

原创 【八十九】【算法分析与设计】大雨吃小鱼_牛客题霸_牛客网,1504. 统计全 1 子矩形 - 力扣(LeetCode),分配任务,以某特性单独考虑,问题分解分类

A数组是一个排列。小明每轮可以执行一次大鱼吃小鱼的操作一次大鱼吃小鱼的操作:对于每条鱼,它在每一次操作时会吃掉右边比自己小的第一条鱼值得注意的是,在一次操作中,每条鱼吃比自己小的鱼的时候是同时发生的。举一个例子,假设现在有三条鱼,体积为分别[5,4,3],5吃4,4吃3,一次操作后就剩下[5]一条鱼。爸爸问小明,你知道要多少次操作,鱼的数量就不会变了嘛?给定N;给定A数组1<=N<=10^51<=Ai<=N一行, 正整数, 表示要多少次操作,鱼的数量就不会变了。输入:3 1 2 3复制。

2024-05-12 15:18:39 543

原创 【八十八】【算法分析与设计】962. 最大宽度坡,316. 去除重复字母,可能成为答案不可能成为答案,剪枝贪心,单调栈应用

给定一个整数数组A坡是元组(i, j),其中i < j且。这样的坡的宽度为j - i。找出A中的坡的最大宽度,如果不存在,返回 0。4最大宽度的坡为 (i, j) = (1, 5): A[1] = 0 且 A[5] = 5.7最大宽度的坡为 (i, j) = (2, 9): A[2] = 1 且 A[9] = 1.

2024-05-11 11:46:06 511

原创 【八十七】【算法分析与设计】单调栈全新版本,右大于,左小于右小于等于,739. 每日温度,907. 子数组的最小值之和

在这个问题中,给定一个数组,代表连续几天的温度,目标是对于每一天,找出需要等待多少天才能有更高的温度。最小值为 3,1,2,4,1,1,2,1,1,1,和为 17。用一个循环维护数组p_max的信息,我需要表示右边的最近的信息,那么右边的所有数都需要进入到单调栈里面.所以我们应该从右往左遍历.在未来的文章中,我将继续探讨这个话题的不同方面,为您呈现更多深度和见解。的每个(连续)子数组。

2024-05-11 11:44:52 424

原创 【八十六】【算法分析与设计】(全新版本)单调栈模板,入栈维护数据,两个循环分别填写左小于右小于信息,单调栈结构(进阶)-牛客网

1.目的是求每一个元素的左小于右小于.思路是单调栈.维护数据的时候是每入栈的时候维护.每一次入栈元素的时候,维护栈的单调性.对于此时需要入栈的元素,栈顶元素一定是最近小于自己的元素下标.然后入栈.

2024-05-10 08:47:53 291

原创 【八十五】【算法分析与设计】单调栈的全新版本,两个循环维护左小于和右小于信息,84. 柱状图中最大的矩形,85. 最大矩形

给定n个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1。求在该柱状图中,能够勾勒出来的矩形的最大面积。10最大的矩形为图中红色区域,面积为 1041.思路就是以每一个位置的柱状图的高度作为矩形的高,然后看以这个高能够扩多长的底,计算这个情况下的面积.问题被划分为几个小的部分,以每一个高度为高去计算.2.单调栈存储左小于,右小于.老旧的单调栈写法是在元素出栈的时候维护数据.但是发现这样特别浪费内存,有的时候还需要给栈开辟二维空间处理相同的数据.

2024-05-10 08:47:01 796

原创 【八十四】【算法分析与设计】单调栈的应用(左最近小于,右最近小于等于)(右最近大于),739. 每日温度,907. 子数组的最小值之和

给定一个整数数组,表示每天的温度,返回一个数组answer,其中answer[i]是指对于第i天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用0来代替。[1,1,1,0][1,1,0]1.只需要记录每一个元素右边的大于自己的元素下标即可.那么对应的answer数组值等于记录的下标减去自己的下标即可.简单的单调栈的应用2.小的心得,很多东西都是依靠特殊的情况猜一般的表达式也就是规律.给定一个整数数组arr,找到min(b)的总和,其中b的范围为arr。

2024-05-09 09:53:59 403

原创 【八十三】【算法分析与设计】单调栈模板(左最近小于,右最近小于),单调栈实现,没有重复的元素,单调栈实现,有重复的元素,单调栈结构(进阶)-牛客网

给定一个可能含有重复值的数组 arr,找到每一个 i 位置左边和右边离 i 位置最近且值比 arr[i] 小的位置。返回所有位置相应的信息。同时,不要忘记订阅我的博客以获取更多有趣的内容。在未来的文章中,我将继续探讨这个话题的不同方面,为您呈现更多深度和见解。如果您有任何问题或想要分享您的观点,请随时在评论区留言。第一行输入一个数字 n,表示数组 arr 的长度。输出n行,每行两个数字 L 和 R,如果不存在,则值为 -1,下标从 0 开始。

2024-05-09 09:52:14 687

原创 【八十二】【算法分析与设计】2421. 好路径的数目,928. 尽量减少恶意软件的传播 II,并查集的应用,元素信息绑定下标一起排序,元素通过下标进行绑定

给你一棵n个节点的树(连通无向无环的图),节点编号从0到n - 1且恰好有n - 1条边。给你一个长度为n下标从开始的整数数组vals,分别表示每个节点的值。同时给你一个二维整数数组edges,其中表示节点a(i)和b(i)( )之间有一条边。一条需要满足以下条件:开始节点和结束节点的值。开始节点和结束节点中间的所有节点值都开始节点的值(也就是说开始节点的值应该是路径上所有节点的最大值)。请你返回不同好路径的数目。注意,一条路径和它反向的路径算作路径。比方说,0 -> 1与1 -> 0。

2024-05-08 09:24:11 1078

原创 【八十一】【算法分析与设计】947. 移除最多的同行或同列石头,2092. 找出知晓秘密的所有专家,数组绑定,下标一切元素标准,集合的妙用,自定义排序sort,lambda表达式,递归思维写迭代

n块石头放置在二维平面中的一些整数坐标点上。每个坐标点上最多只能有一块石头。如果一块石头的上有其他石头存在,那么就可以移除这块石头。给你一个长度为n的数组stones,其中表示第i块石头的位置,返回的最大数量。5一种移除 5 块石头的方法如下所示: 移除石头 [2,2] ,因为它和 [2,1] 同行。移除石头 [2,1] ,因为它和 [0,1] 同列。移除石头 [1,2] ,因为它和 [1,0] 同行。移除石头 [1,0] ,因为它和 [0,0] 同列。

2024-05-08 09:22:53 1112

原创 【八十】【算法分析与设计】并查集应用!!!二维网格降低成一维,遍历判断每一个点不重不漏,765. 情侣牵手,839. 相似字符串组,200. 岛屿数量

1.首先给情侣分集合,例如01是一对情侣,对应0号情侣,23是一对情侣,对应1号情侣,45是一对情侣,对应2号情侣.情侣的对应关系是/2操作对应关系.2.01下标有两个人,将这两个人对应的情侣号集合合并,23下标有两个人,将这两个人的对应的情侣号集合合并,以此类推.3.对于所有的存在的集合,每一个集合需要交换的最小次数是个数-1.例如第一个集合元素有n个,那么就需要n-1次交换,第二个集合元素有m个,那么就需要m-1次交换.4.将所有交换次数相加,得到n/2-m.也就是总共的情侣个数减去集合个数.5.

2024-05-07 09:19:02 1104

原创 【七十九】【算法分析与设计】并查集模板!!!并查集的实现_牛客题霸_牛客网,【模板】并查集 - 洛谷,并查集代码!!!

给定一个没有重复值的整形数组arr,初始时认为arr中每一个数各自都是一个单独的集合。请设计一种叫UnionFind的结构,并提供以下两个操作。boolean isSameSet(int a, int b): 查询a和b这两个数是否属于一个集合void union(int a, int b): 把a所在的集合与b所在的集合合并在一起,原本两个集合各自的元素以后都算作同一个集合[要求]

2024-05-07 09:17:04 505

原创 【七十八】【算法分析与设计】213. 打家劫舍 II,2560. 打家劫舍 IV,面试题 17.24. 最大子矩阵,压缩矩阵,子矩阵累加和转化为子数组累加和,求子数组最大累加和的区间

你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,。给定一个代表每个房屋存放金额的非负整数数组,计算你,今晚能够偷窃到的最高金额。3你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相邻的。4你可以先偷窃 1 号房屋(金额 = 1),然后偷窃 3 号房屋(金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4。31.

2024-05-06 13:49:16 644 1

原创 【七十七】【算法分析与设计】53. 最大子数组和,198. 打家劫舍,918. 环形子数组的最大和,自顶向下的动态规划,记忆化搜索,环形子数组问题转化为熟悉的问题

给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。是数组中的一个连续部分。6连续子数组 [4,-1,2,1] 的和最大,为 6。nums = [1]123如果你已经实现复杂度为O(n)的解法,尝试使用更为精妙的求解。1.子数组的划分,以某个位置结尾的子数组.dp[i]表示以i位置结尾的子数组中,数组和最大的值.2.走一步,万能的一步.针对于i位置元素的具体情况.走一步.

2024-05-06 12:10:45 496

原创 【七十六】【算法分析与设计】2435. 矩阵中和能被 K 整除的路径,87. 扰乱字符串,三维动态规划

给你一个下标从开始的m x n整数矩阵grid和一个整数k。你从起点(0, 0)出发,每一步只能往或者往,你想要到达终点。请你返回路径和能被k整除的路径数目,由于答案可能很大,返回答案对10(9)7的结果。2有两条路径满足路径上元素的和能被 k 整除。第一条路径为上图中用红色标注的路径,和为 5 + 2 + 4 + 5 + 2 = 18 ,能被 3 整除。第二条路径为上图中用蓝色标注的路径,和为 5 + 3 + 0 + 5 + 2 = 15 ,能被 3 整除。1。

2024-04-30 12:50:14 1203 1

原创 【七十五】【算法分析与设计】474. 一和零,879. 盈利计划,688. 骑士在棋盘上的概率,三维动态规划

1.动态规划、递归、迭代的相似性是走了一步,然后重复这一步解决问题,实际上我们只需要知道怎么走好这重复的一步就可以了.2.怎么走好这重复的一步,利用已知信息构造一般的f函数,由已知信息推导出答案,然后走一步,重复利用这个f函数.

2024-04-30 12:27:50 549

原创 【七十四】【算法分析与设计】115. 不同的子序列,72. 编辑距离,97. 交错字符串,记忆化递归自顶向下的动态规划

给你两个字符串s和t,统计并返回在s的中t出现的个数,结果需要对 10(9) 7 取模。和t由英文字母组成1.动态规划定义,区间dp.s中[0,i]区间子序列t[0,j]区间子串出现的个数.如果i位置字符匹配j位置字符,等价于[0,i-1]区间子序列匹配[0,j-1]子串的个数.如果i位置字符不匹配j位置字符,等价于[0,i-1]区间子序列匹配[0,j]子串个数.给你两个单词word1和word2请返回将word1转换成word2所使用的最少操作数。

2024-04-29 14:31:17 337 1

原创 【七十三】【算法分析与设计】516. 最长回文子序列,二叉树,329. 矩阵中的最长递增路径,记忆化递归填表

给你一个字符串s,找出其中最长的回文子序列,并返回该序列的长度。子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。4一个可能的最长回文子序列为 "bbbb"。s = "cbbd"2一个可能的最长回文子序列为 "bb"。仅由小写英文字母组成1.回文串子序列.[i,j]区间最长回文子序列,如果s[i]==s[j],dp[i][j]=dp[i+1][j-1].如果s[i]!2.利用记忆化递归填表,可以很快处理边界,不需要考虑填表顺序.

2024-04-29 14:30:14 754

原创 【七十二】【算法分析与设计】64. 最小路径和,79. 单词搜索,1143. 最长公共子序列,利用记忆化递归填写dp表,可以很容易解决边界和填表顺序

单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。同时,不要忘记订阅我的博客以获取更多有趣的内容。在未来的文章中,我将继续探讨这个话题的不同方面,为您呈现更多深度和见解。,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。是这两个字符串所共同拥有的子序列。

2024-04-28 16:27:33 963 1

原创 【七十一】【算法分析与设计】467. 环绕字符串中唯一的子字符串,940. 不同的子序列 II,子串的划分,子序列的划分,区间划分---递推

定义字符串base为一个无限环绕的字符串,所以base给你一个字符串s,请你统计并返回s中有多少也在base中出现。s = "a"1字符串 s 的子字符串 "a" 在 base 中出现。s = "cac"2字符串 s 有两个子字符串 ("a", "c") 在 base 中出现。s = "zab"6字符串 s 有六个子字符串 ("z", "a", "b", "za", "ab", and "zab") 在 base 中出现。s 由小写英文字母组成1.子串的划分,以某个位置结尾的子串,进行子串的划分.

2024-04-28 14:54:14 723

原创 【七十】【算法分析与设计】639. 解码方法 II,264. 丑数 II,32. 最长有效括号,记忆化递归填写dp表,用记忆化递归代替大部分动态规划

一条包含字母A-Z的消息通过以下的方式进行了'A' -> "1"'B' -> "2"...要一条已编码的消息,所有的数字都必须分组,然后按原来的编码方案反向映射回字母(可能存在多种方式)。例如,"11106""AAJF"对应分组对应分组(11 10 6)注意,像(1 11 06)这样的分组是无效的,因为"06"不可以映射为'F',因为"6"与"06"不同。上面描述的数字字母映射方案,编码消息中可能包含'*'字符,可以表示从'1'到'9'的任一数字(不包括'0'例如,编码字符串"1*"可以表示"11"

2024-04-27 23:41:24 915 1

原创 【六十九】【算法分析与设计】509. 斐波那契数,983. 最低票价,91. 解码方法,从暴力递归开始改写记忆化递归+动态规划

1.暴力递归改写记忆化递归和动态规划过程十分简单,记忆化递归可以说是动态规划的自顶向下版本,正常动态规划可以理解为自底向上版本.2.但不是所有的递归都可以改写为记忆化搜索和动态规划.定义的递归具有重复子问题,递归函数对应某一个位置dp值.

2024-04-27 20:58:18 1141

原创 【六十八】【算法分析与设计】DFS 和 BFS练习,编程模板,变量命名习惯,BFS应用,BFS广度优先遍历,利用编程模板写题,DFS应用

after的算法书的遗落在一个叫做AIJ的迷宫中了,这个迷宫有N*M个房间,迷宫的入口为(1,1),算法书遗落在(r,c)。小明如果现在在点(x,y)处,那么下一步只能走到相邻的四个格子中的某一个:(x+1,y),(x-1,y),(x,y+1),(x,y-1);接下来N行,每行M个字符,每个表示房间的状态,“.”表示空房间,“*”表示无法进入的房间,“F”表示有墨菲斯托存在的房间,“M”表示有莉莉丝存在的房间。小明的起点在地图中用“S”来表示,终点用“E”来表示,障碍物用“#”来表示,空地用“.”来表示。

2024-04-27 11:16:44 1259 2

原创 【六十七】【算法分析与设计】[HNOI2003]操作系统,优先队列,自定义比较方式,模拟,提高输入输出效率之神奇小代码,初始化小技巧

优先队列默认是大根堆,也就是队列顶端是最大的元素,想要改变"大"的定义,只需要重载类的运算符,可能会导致编译错误.因此我们只能重载operator

2024-04-26 00:36:52 570 3

原创 【六十六】【算法分析与设计】上帝造题的七分钟 2 / 花神游历各国 - 洛谷,The Child and Sequence - 洛谷,[HAOI2014] 贴海报 - 洛谷,线段树的应用,离散化操作

XLk 觉得《上帝造题的七分钟》不太过瘾,于是有了第二部。"第一分钟,X 说,要有数列,于是便给定了一个正整数数列。第二分钟,L 说,要能修改,于是便有了对一段数中每个数都开平方(下取整)的操作。第三分钟,k 说,要能查询,于是便有了求一段数的和的操作。第四分钟,彩虹喵说,要是 noip 难度,于是便有了数据范围。第五分钟,诗人说,要有韵律,于是便有了时间限制和内存限制。第六分钟,和雪说,要省点事,于是便有了保证运算过程中及最终结果均不超过 $$6$$ 位有符号整数类型的表示范围的限制。

2024-04-25 20:28:59 1148

原创 【六十五】【算法分析与设计】使用DFS方法求出从指定入口到出口的所有迷宫路径,使用BFS方法求出从指定入口到出口的最优迷宫路径,3205. 最优配餐 - AcWing题库,BFS广度优先遍历的应用

1、求解迷宫问题,有如下 8*8 的迷宫图:其中 O 表示通路方块,X 表示障碍方块。假设入口位置为(0, 0),出口为右下角方块位置(7, 7)。1.dfs 深度优先遍历,节点信息对应是 visit 和 Maze,统一的写法,进入函数就维护信息,出函数之前就回溯消除维护。维护信息的方式通常有两种,要么是上一节点提前维护,要么是当前节点维护,我们只需要分清楚哪些信息是上一节点维护的,哪些信息是当前节点维护的即可。上一节点提前维护的优势是可以使用上一节点特有的信息。

2024-04-25 10:18:54 756

原创 【六十四】【算法分析与设计】699. 掉落的方块,离散化操作,线段树优化,区间查询sum+区间更新update

在二维平面上的 x 轴上,放置着一些方块。给你一个二维整数数组positions,其中表示:第i个方块边长为,其左侧边与 x 轴上坐标点left(i)对齐。每个方块都从一个比目前所有的落地方块更高的高度掉落而下。方块沿 y 轴负方向下落,直到着陆到或者是。一个方块仅仅是擦过另一个方块的左侧边或右侧边不算着陆。一旦着陆,它就会固定在原地,无法移动。在每个方块掉落后,你必须记录目前所有已经落稳的。返回一个整数数组ans,其中ans[i]表示在第i块方块掉落后堆叠的最高高度。[2,5,5]

2024-04-23 22:00:31 923 1

原创 【六十三】【算法分析与设计】线段树模板,区间sum查询+区间add,区间sum查询+区间update,区间max查询+区间add,区间max查询+区间update

1.arr是nums对应的数组,区别在于arr0号位置没有元素.size是arr数组的元素个数,即nums.size()+1.2.实现区间sum查询,需要存储区间sum值,所以节点参数需要sum.如果是静态的区间sum查询这样就行了.如果需要区间add操作,对应的参数是addlazy和isaddlazy.3.最后树结构vector<treenode> t.4.

2024-04-22 20:38:30 570 1

原创 【六十二】【算法分析与设计】买苹果_牛客题霸_牛客网,牛牛爱博弈,829. 连续整数求和,对数器找规律法,博弈论2^k移动对3取余规律,取余的性质整除性

小易去附近的商店买苹果,奸诈的商贩使用了捆绑交易,只提供6个每袋和8个每袋的包装(包装不可拆分)。可是小易现在只想购买恰好n个苹果,小易想购买尽量少的袋数方便携带。如果不能购买恰好n个苹果,小易将不会购买。输入一个整数n,表示小易想购买n(1 ≤ n ≤ 100)个苹果输出一个整数表示最少需要购买的袋数,如果不能买恰好n个苹果则输出-1输入:20复制输出:3复制。

2024-04-22 19:24:41 907 1

原创 【五十七】【算法分析与设计】IndexTree,IndexTree的作用,IndexTree流程,IndexTree代码

给你一个nums数组,实现操作+nums数组操作。可以使用IndexTree结构实现这两个操作。

2024-04-21 13:19:40 1076 1

原创 【六十一】【算法分析与设计】高精度乘法和高精度除法

由于计算机的基本数据类型如int或long有其大小限制,当我们需要进行超出这些基本类型范围的计算时,就需要使用大数乘法技术。一种简单的大数乘法算法——。这种方法特别适用于将一个大数(用字符串表示)与一个较小的整数相乘。把迭代过程想象成许多节点的连接,每一个节点拥有的信息数量是相同的。每当进入一个新的节点,信息变量存储的是上一个节点的信息。利用上一个节点的信息维护当前节点的信息,然后完成我们希望的工作。这样的好处是明确统一了维护变量的时机----进入节点之后统一维护。

2024-04-21 12:36:26 957

原创 【五十九】【算法分析与设计】高精度加法和高精度减法

高精度加法,也称为大数加法,是一种能够处理超过标准数据类型(如 int 或 long)允许范围的大数字的算法。高精度数字通常无法使用单一的标准数据类型来存储。一个常见的方法是使用数组或字符串来表示每一位数字。例如,数字 "123456789" 可以被存储为一个数组 [1,2,3,4,5,6,7,8,9]。1.迭代可以看作是只有递的递归。没有归的递归,不需要回溯,因此每个节点的信息,存放的是上个节点的信息。

2024-04-21 00:37:05 281 1

原创 【六十】【算法分析与设计】用一道题目解决dfs深度优先遍历,dfs中节点信息,dfs递归函数模板进入前维护出去前回溯,唯一解的剪枝飞升返回值true

1.递归函数dfs,用同样的函数完成相同的逻辑问题,但是需要用其他遍历辅助判断当前位于那个节点。(i,j)以上都是当前节点的信息。2.每一次进入dfs维护当前节点信息,每一次出去之前回溯,消除维护的信息。row[i]++;col[j]++;//数学推导不细说,找规律//添加主要逻辑row[i]--;col[j]--;3.如果只需要找唯一解,找到即返回,找到就不用工作,找到就飞升。修改返回值,进入下一层逻辑,出口逻辑。剪枝row[i]++;col[j]++;

2024-04-20 13:09:46 912

原创 【五十八】【算法分析与设计】线段树和IndexTree应用,315. 计算右侧小于当前元素的个数,699. 掉落的方块,327. 区间和的个数,线段树+IndexTree求解动态前缀和,动态区间和,坐

给你一个整数数组nums,按要求返回一个新数组counts。数组counts有该性质:counts[i]的值是nums[i]右侧小于nums[i]的元素的数量。[0][0,0]

2024-04-20 12:00:34 768 1

原创 【五十六】【算法分析与设计】线段树之add+query操作,pair表示节点,自定义类型表示节点,真树结构实现线段树与数组实现线段树

线段树解决的问题给你一个nums数组,1.L~R区间上的值全部加C。2.L~R区间上的值全部变成C。3.对L~R区间上求和操作。对于第一个方法,如果正常遍历L~R加C,时间复杂度是O(N)。对于第二个方法,如果正常遍历L~R=C,时间复杂度是O(N)。对于第三个方法,如果正常遍历L~R得到sum累加和,时间复杂度是O(N)。线段树可以做到O(logN)时间复杂度做到这三个方法。线段树nums数组对应的线段树构造我有一个nums数组,3,2,1,2,6,下标依次从1开始,分

2024-04-19 14:36:55 1414 1

原创 【五十五】【算法分析与设计】5. 最长回文子串,214. 最短回文串(最长前缀回文串),459. 重复的子字符串,Manacher算法应用,中心扩散,KMP算法求前缀最长回文串

给你一个字符串s,找到s中最长的回文子串。如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。"bab""aba" 同样是符合题意的答案。s = "cbbd""bb"仅由数字和英文字母组成。

2024-04-17 22:32:46 998 1

原创 【五十四】【算法分析与设计】Manacher算法,Manacher算法作用,Manacher算法流程,Manacher算法证明,Manacher算法代码

1.给你一个字符串str,要你求这个字符串的最长回文子串的长度,或者求这个字符串的最长回文子串在str中开始位置的下标。2.暴力解法,中心扩散算法,时间复杂度O(N*2)。Manacher算法可以用O(N)解决这个问题。

2024-04-17 21:06:35 979

原创 【五十三】【算法分析与设计】1392. 最长快乐前缀,686. 重复叠加字符串匹配,796. 旋转字符串,KMP算法

是在原字符串中既是前缀也是后缀(不包括原字符串自身)的字符串。给你一个字符串s,请你返回它的。如果不存在满足题意的前缀,则返回一个空字符串""。"l"不包括 s 自己,一共有 4 个前缀("l", "le", "lev", "leve")和 4 个后缀("l", "el", "vel", "evel")。最长的既是前缀也是后缀的字符串是 "l"。"abab""abab" 是最长的既是前缀也是后缀的字符串。题目允许前后缀在原字符串中重叠。只含有小写英文字母。

2024-04-16 16:50:35 1237 1

原创 【五十二】【算法分析与设计】28. 找出字符串中第一个匹配项的下标,1408. 数组中的字符串匹配,1455. 检查单词是否为句中其他单词的前缀,KMP算法应用,string内置函数寻找子串

给你两个字符串haystack和needle,请你在haystack字符串中找出needle字符串的第一个匹配项的下标(下标从 0 开始)。如果needle不是haystack的一部分,则返回-1。0"sad" 在下标 0 和 6 处匹配。第一个匹配项的下标是 0 ,所以返回 0。-1"leeto" 没有在 "leetcode" 中出现,所以返回 -1。和needle仅由小写英文字符组成。

2024-04-16 09:11:51 688 1

空空如也

空空如也

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

TA关注的人

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