算法设计与分析
文章平均质量分 93
妖精七七_
一以贯之
展开
-
【一百一十】【算法分析与设计】[SDOI2009] HH的项链,树状数组应用,查询区间的种类数,树状数组查询区间种类数
当i遍历到5的时候,我们查询map_left发现5位置的元素3之前出现过,位置是3,所以需要进行去重操作,将3位置count值减少1,然后5位置count值增加1.并且将维护arr_left值,元素3最右边的下标是5.因此我们可以按照这样的规则,只保留最右边的1.因为如果包含最右边的1,其他的可以被代替,如果没有包含最右边的1,其他的1也没有意义.1表示重复的种类的1出现的位置,那么打叉的地方是需要进行去重的,打勾的地方是可以选择保留的地方.按照查询的右区间进行排序,然后只维护r左边的count值.原创 2024-06-08 17:39:21 · 1020 阅读 · 0 评论 -
【一百零九】【算法分析与设计】树状数组求解前缀最大值,673. 最长递增子序列的个数,树状数组求前缀区间最大值
树状数组可以求解和前缀区间有关的问题,例如前缀和,前缀区间最值.可以利用logn的时间复杂度快速查找前缀信息.利用树状数组查询前缀区间中最大值问题.树状数组下标1位置存储arr数组下标1位置的最大值.树状数组2位置存储arr数组1,2位置最大值.数组数组3位置存储arr数组3位置最大值.以此类推…查找arr数组1~i前缀区间最大值.利用lowbit跳转,记录遍历的每一个tree[i]的最大值.原创 2024-06-08 00:08:26 · 1237 阅读 · 0 评论 -
【一百零八】【算法分析与设计】P1908 逆序对,P1637 三元上升子序列,树状数组区间和应用
二元组意思是下标{i,j}组合,并且满足i原创 2024-06-07 09:35:09 · 820 阅读 · 0 评论 -
【一百零七】【算法分析与设计】P3374 【模板】树状数组 1,P3368 【模板】树状数组 2,P3372 【模板】线段树 1,树状数组实现单点更新范围查询,范围更新单点查询,范围更新范围查询
对于arr[i]可以理解从i位置开始累加arr[i],但是到i+1位置就停止,所以从i位置开始对后面的值的影响是arr[i],但是i+1位置开始就停止影响了,所以从i+1位置对后面的影响是-arr[i].+(diff(1)+diff(2)+…所以我们需要构造两个数组数组,一个是arr数组对应的差分数组,一个是(i-1)*差分数组的值的数组.对arr数组范围(l~r)累加k.只需要维护diff[l]+=k,diff[r+1]-=k.需要维护的下标分别是i+lowbit(i),i+2*lowbit(i)…原创 2024-06-06 01:06:31 · 1159 阅读 · 0 评论 -
【一百零六】【算法分析与设计】并查集的实现,P3367 【模板】并查集,sizee集合的元素个数信息
给定一个没有重复值的整形数组arr,初始时认为arr中每一个数各自都是一个单独的集合。请设计一种叫UnionFind的结构,并提供以下两个操作。boolean isSameSet(int a, int b): 查询a和b这两个数是否属于一个集合void union(int a, int b): 把a所在的集合与b所在的集合合并在一起,原本两个集合各自的元素以后都算作同一个集合[要求]原创 2024-06-05 14:49:53 · 814 阅读 · 0 评论 -
【一百零五】【算法分析与设计】分解质因数,952. 按公因数计算最大组件大小,204. 计数质数,分解质因数,埃式筛
题目:分解质因数题目描述给定一个正整数n,编写一个程序将其分解为质因数,并按从小到大的顺序输出这些质因数。输入格式一个正整数n,其中n的范围是。输出格式按从小到大的顺序输出n的质因数,每个质因数占一行。输入示例4012100输出示例2 5 53 757提示程序需要处理大整数,因此使用long long类型。质因数应该按从小到大的顺序输出。每个质因数只输出一次,即使一个质因数在n中出现多次。一个任意的正整数n可以写成质因数的乘积形式:np1k1×p2k2×⋯。原创 2024-06-05 13:47:51 · 681 阅读 · 0 评论 -
【一百零四】【算法分析与设计】【模板】二维差分,2132. 用邮票贴满网格图,LCP 74. 最强祝福力场,二位差分,差分思想,记录变化值,离散化技巧
描述给你一个n行m列的矩阵,下标从1开始。接下来有q次操作,每次操作输入5个参数x1, y1, x2, y2, k表示把以(x1, y1)为左上角,(x2,y2)为右下角的子矩阵的每个元素都加上k,请输出操作后的矩阵。输入描述:第一行包含三个整数n,m,q.接下来n行,每行m个整数,代表矩阵的元素接下来q行,每行5个整数x1, y1, x2, y2, k,分别代表这次操作的参数1≤nm≤10001≤q≤1051≤x1≤x2≤n1≤y1≤y2。原创 2024-06-04 20:08:41 · 963 阅读 · 0 评论 -
【一百零三】【算法分析与设计】并查集,并查集的实现,P3367 【模板】并查集
给定一个没有重复值的整形数组arr,初始时认为arr中每一个数各自都是一个单独的集合。请设计一种叫UnionFind的结构,并提供以下两个操作。boolean isSameSet(int a, int b): 查询a和b这两个数是否属于一个集合void union(int a, int b): 把a所在的集合与b所在的集合合并在一起,原本两个集合各自的元素以后都算作同一个集合[要求]原创 2024-06-03 16:19:10 · 253 阅读 · 0 评论 -
【一百零二】【算法分析与设计】304. 二维区域和检索 - 矩阵不可变,1139. 最大的以 1 为边界的正方形,地毯,二维前缀和求区间累加和,二维差分处理重复多个数据
给定一个二维矩阵matrix实现NumMatrix给定整数矩阵matrix进行初始化返回所描述的子矩阵的元素。最多调用104次sumRegion方法给你一个由若干0和1组成的二维网格grid,请你找出边界全部由1组成的最大子网格,并返回该子网格中的元素数量。如果不存在,则返回0。为0或地毯题目描述在n×n的格子上有m个地毯。给出这些地毯的信息,问每个点被多少个地毯覆盖。输入格式第一行,两个正整数nm。意义如题所述。接下来m行,每行两个坐标x1y1和x2y。原创 2024-06-03 01:03:47 · 670 阅读 · 0 评论 -
【一百零一】【算法分析与设计】差分,1109. 航班预订统计,P4231 三步必杀,P5026 Lycanthropy
这里有n个航班,它们分别从1到n进行编号。有一份航班预订表bookings,表中第i条预订记录意味着在从first(i)到last(i)first(i)和last(i))的上预订了seats(i)个座位。请你返回一个长度为n的数组answer,里面的元素是每个航班预定的座位总数。原创 2024-06-01 20:27:07 · 758 阅读 · 0 评论 -
【一百】【算法分析与设计】N皇后问题常规解法+位运算解法
来源:牛客网给出一个n×nn\times nn×n的国际象棋棋盘,你需要在棋盘中摆放nnn个皇后,使得任意两个皇后之间不能互相攻击。具体来说,不能存在两个皇后位于同一行、同一列,或者同一对角线。请问共有多少种摆放方式满足条件。一行,一个整数n(1≤n≤12)n(1\le n \le 12)n(1≤n≤12),表示棋盘的大小。输出一行一个整数,表示总共有多少种摆放皇后的方案,使得它们两两不能互相攻击。示例1复制44复制22。原创 2024-05-31 14:41:05 · 523 阅读 · 0 评论 -
【三】【算法分析与设计】第三届程序设计竞赛部分题目,竖式加法,竖式乘法,求序列差最大,小红的字符串,再编号,消灭飞龙,世界五子棋
$$10^9$$原创 2024-05-30 19:35:35 · 1037 阅读 · 0 评论 -
【九十九】【算法分析与设计】百度之星2023部分题目,BD202311 夏日漫步,BD202314 跑步,BD202321 新材料,找下一个元素值相等的下标用map或者排序
夏日夜晚,小度看着庭院中长长的走廊,萌发出想要在上面散步的欲望,小度注意到月光透过树荫落在地砖上,并且由于树荫的遮蔽度不通,所以月光的亮度不同,为了直观地看到每个格子的亮度,小度用了一些自然数来表示它们的亮度。亮度越高则数字越大,亮度相同的数字相同。走廊是只有一行地砖的直走廊。上面一共有 nn个格子,每个格子都被小度给予了一个数字 a_iai来表示它的亮度。小度现在站在 11 号格子,想要去到 nn号格子。小度可以正向或反向移动到相邻的格子,每次需要花费 11 的体力。原创 2024-05-30 16:22:51 · 776 阅读 · 0 评论 -
【九十八】【算法分析与设计】百度之星2023部分题目,BD202301 公园,BD202303 第五维度,BD202305 糖果促销,BD202328 传信游戏
今天是六一节,小度去公园玩,公园一共 NN个景点,正巧看到朋友圈度度熊也在这个公园玩,于是他们约定好一块去景点 NN。小度当前所在景点编号为 TT,从一个景点到附近的景点需要消耗的体力是 TETE,而度度熊所在景点编号为 FF,移动消耗为 FEFE。好朋友在一块,赶路都会开心很多,所以如果小度和度度熊一块移动(即在相同位置向相同方向移动),每一步他俩的总消耗将会减少 SS。求他俩到景点 NN时,所需要的总消耗最少是多少?格式输入格式:第一行三个数值,TE,FE,S。原创 2024-05-29 20:11:23 · 1092 阅读 · 0 评论 -
【九十七】【算法分析与设计】图论,迷宫,1207. 大臣的旅费,走出迷宫,石油采集,after与迷宫,逃离迷宫,3205. 最优配餐,路径之谜
很久以前,TT 王国空前繁荣。为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市。为节省经费,TT 国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个大城市都能从首都直接或者通过其他大城市间接到达。同时,如果不重复经过大城市,从首都到达每个大城市的方案都是唯一的。JJ 是 TT 国重要大臣,他巡查于各大城市之间,体察民情。所以,从一个城市马不停蹄地到另一个城市成了 JJ 最常做的事情。他有一个钱袋,用于存放往来城市间的路费。原创 2024-05-29 13:31:25 · 1109 阅读 · 0 评论 -
【九十六】【算法分析与设计】使用回溯法求解子集(幂集)问题,使用回溯法求解“和”问题,使用回溯法求解全排列问题,使用回溯法求解0/1背包问题(同时进行左剪枝和右剪枝改进)
有一个含n个整数的数组a,所有元素均不相同,设计一个算法求其所有子集(幂集)。例如,a[]={1,2,3},所有子集是:{},{3},{2},{2,3},{1},{1,3},{1,2},{1,2,3}(输出顺序无关)。求解过程和结果如下图所示:1.递归解决组合问题.节点信息是集合中存在的元素.也就是我们选择的元素.2.n个整数的数组a,我们需要选择n次,因此i表示当前节点的位置.递归的出口试i==n的时候.3.递归函数只需要做两件事情,第一件事是选择,第二件事是不选择.原创 2024-05-27 15:14:44 · 1167 阅读 · 0 评论 -
【九十五】【算法分析与设计】22级一二班 蛮力法实验,字符串编码与解码,【模板】01背包, wnm的全排列,非递归实现组合型枚举,内置函数找全排列--->找固定数量的组合
来源:牛客网给你两个长度相同的字符串a,b,现在已知b是a编码之后的结果比如a = "CAT", b = "DOG", 那么D其实是C,O其实是A,G其实是T现在给你一个字符串c,如果c能够被解码出来,输出c解码后的字符串,如果不能输出@输入三行,每行一个字符串,长度在50以内输出一个字符串示例1复制CAT DOG GODCATDOGGOD复制TACTAC示例2复制BANANA METETE TEMPBANANAMETETETEMP复制@示例3。原创 2024-05-27 11:10:47 · 726 阅读 · 0 评论 -
【九十四】【算法分析与设计】练习四蛮力法练习,排列问题和组合问题,求解最大连续子序列和问题,求解幂集问题,求解0/1背包问题,求解任务分配问题
给定一个有n(n≥1)个整数的序列,要求求出其中最大连续子序列的和。例如:序列(-2,11,-4,13,-5,-2)的最大子序列和为20序列(-6,2,4,-7,5,3,2,-1,6,-9,10,-2)的最大子序列和为16。规定一个序列最大连续子序列和至少是0(看成0个元素构成的子序列),如果小于0,其结果为0。1.子数组累加和最大值问题,如何划分问题,子数组应该如何划分?可以划分为以某一个位置结尾的子数组,以i位置结尾的子数组.原创 2024-05-26 15:28:43 · 1013 阅读 · 0 评论 -
【九十三】【算法分析与设计】719. 找出第 K 小的数对距离,N 台电脑的最长时间,二分答案法
数对(a,b)由整数a和b组成,其数对距离定义为a和b的绝对差值。给你一个整数数组nums和一个整数k,数对由nums[i]和nums[j]组成且满足。返回第k小的数对距离。0数对和对应的距离如下: (1,3) -> 2 (1,1) -> 0 (3,1) -> 2 距离第 1 小的数对是 (1,1) ,距离为 0。05。原创 2024-05-23 19:47:23 · 987 阅读 · 1 评论 -
【九十二】【算法分析与设计】875. 爱吃香蕉的珂珂,410. 分割数组的最大值,机器人跳跃问题,二分答案法
珂珂喜欢吃香蕉。这里有n堆香蕉,第i堆中有piles[i]根香蕉。警卫已经离开了,将在h小时后回来。珂珂可以决定她吃香蕉的速度k(单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉k根。如果这堆香蕉少于k根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。返回她可以在h小时内吃掉所有香蕉的最小速度kk为整数)。43023给定一个非负整数数组nums和一个整数k,你需要将这个数组分成k个非空的连续子数组。设计一个算法使得这k。原创 2024-05-22 10:41:42 · 483 阅读 · 0 评论 -
【九十一】【算法分析与设计】单调队列成为答案的可能性,862. 和至少为 K 的最短子数组,1499. 满足不等式的最大值,1499. 满足不等式的最大值
给你一个整数数组nums和一个整数k,找出nums中和至少为k的,并返回该子数组的长度。如果不存在这样的,返回-1。是数组中的一部分。1-131.单调队列里面存储的是可能成为答案的子数组的开头下标.对于每一个想要进入单调队列的位置,匹配单调队列里面队头的元素.单调队列里面存储前缀和下标,严格按照前缀和队头到队尾前缀和从小到大.原创 2024-05-13 11:07:05 · 766 阅读 · 0 评论 -
【九十】【算法分析与设计】单调队列,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 · 674 阅读 · 0 评论 -
【八十九】【算法分析与设计】大雨吃小鱼_牛客题霸_牛客网,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 · 598 阅读 · 0 评论 -
【八十八】【算法分析与设计】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 · 569 阅读 · 1 评论 -
【八十七】【算法分析与设计】单调栈全新版本,右大于,左小于右小于等于,739. 每日温度,907. 子数组的最小值之和
在这个问题中,给定一个数组,代表连续几天的温度,目标是对于每一天,找出需要等待多少天才能有更高的温度。最小值为 3,1,2,4,1,1,2,1,1,1,和为 17。用一个循环维护数组p_max的信息,我需要表示右边的最近的信息,那么右边的所有数都需要进入到单调栈里面.所以我们应该从右往左遍历.在未来的文章中,我将继续探讨这个话题的不同方面,为您呈现更多深度和见解。的每个(连续)子数组。原创 2024-05-11 11:44:52 · 455 阅读 · 0 评论 -
【八十六】【算法分析与设计】(全新版本)单调栈模板,入栈维护数据,两个循环分别填写左小于右小于信息,单调栈结构(进阶)-牛客网
1.目的是求每一个元素的左小于右小于.思路是单调栈.维护数据的时候是每入栈的时候维护.每一次入栈元素的时候,维护栈的单调性.对于此时需要入栈的元素,栈顶元素一定是最近小于自己的元素下标.然后入栈.原创 2024-05-10 08:47:53 · 317 阅读 · 0 评论 -
【八十五】【算法分析与设计】单调栈的全新版本,两个循环维护左小于和右小于信息,84. 柱状图中最大的矩形,85. 最大矩形
给定n个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1。求在该柱状图中,能够勾勒出来的矩形的最大面积。10最大的矩形为图中红色区域,面积为 1041.思路就是以每一个位置的柱状图的高度作为矩形的高,然后看以这个高能够扩多长的底,计算这个情况下的面积.问题被划分为几个小的部分,以每一个高度为高去计算.2.单调栈存储左小于,右小于.老旧的单调栈写法是在元素出栈的时候维护数据.但是发现这样特别浪费内存,有的时候还需要给栈开辟二维空间处理相同的数据.原创 2024-05-10 08:47:01 · 825 阅读 · 0 评论 -
【八十四】【算法分析与设计】单调栈的应用(左最近小于,右最近小于等于)(右最近大于),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 · 431 阅读 · 0 评论 -
【八十三】【算法分析与设计】单调栈模板(左最近小于,右最近小于),单调栈实现,没有重复的元素,单调栈实现,有重复的元素,单调栈结构(进阶)-牛客网
给定一个可能含有重复值的数组 arr,找到每一个 i 位置左边和右边离 i 位置最近且值比 arr[i] 小的位置。返回所有位置相应的信息。同时,不要忘记订阅我的博客以获取更多有趣的内容。在未来的文章中,我将继续探讨这个话题的不同方面,为您呈现更多深度和见解。如果您有任何问题或想要分享您的观点,请随时在评论区留言。第一行输入一个数字 n,表示数组 arr 的长度。输出n行,每行两个数字 L 和 R,如果不存在,则值为 -1,下标从 0 开始。原创 2024-05-09 09:52:14 · 725 阅读 · 0 评论 -
【八十二】【算法分析与设计】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 · 1117 阅读 · 0 评论 -
【八十一】【算法分析与设计】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 · 1153 阅读 · 0 评论 -
【八十】【算法分析与设计】并查集应用!!!二维网格降低成一维,遍历判断每一个点不重不漏,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 · 1152 阅读 · 0 评论 -
【七十九】【算法分析与设计】并查集模板!!!并查集的实现_牛客题霸_牛客网,【模板】并查集 - 洛谷,并查集代码!!!
给定一个没有重复值的整形数组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 · 534 阅读 · 0 评论 -
【七十八】【算法分析与设计】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 · 724 阅读 · 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 · 522 阅读 · 0 评论 -
【七十六】【算法分析与设计】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 · 1342 阅读 · 1 评论 -
【七十五】【算法分析与设计】474. 一和零,879. 盈利计划,688. 骑士在棋盘上的概率,三维动态规划
1.动态规划、递归、迭代的相似性是走了一步,然后重复这一步解决问题,实际上我们只需要知道怎么走好这重复的一步就可以了.2.怎么走好这重复的一步,利用已知信息构造一般的f函数,由已知信息推导出答案,然后走一步,重复利用这个f函数.原创 2024-04-30 12:27:50 · 591 阅读 · 0 评论 -
【七十四】【算法分析与设计】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 · 372 阅读 · 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 · 835 阅读 · 0 评论 -
【七十二】【算法分析与设计】64. 最小路径和,79. 单词搜索,1143. 最长公共子序列,利用记忆化递归填写dp表,可以很容易解决边界和填表顺序
单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。同时,不要忘记订阅我的博客以获取更多有趣的内容。在未来的文章中,我将继续探讨这个话题的不同方面,为您呈现更多深度和见解。,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。是这两个字符串所共同拥有的子序列。原创 2024-04-28 16:27:33 · 992 阅读 · 1 评论