自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 特辣的海藻!16

这段代码的核心思想是一种贪心的想法。所有玩具零件重量排序后,最轻的与最重的一起,第二轻的与第二重的一起。因为大的数与大的数相乘会很大,所以让最大的数和最小的数字相乘,会是最最小的。在左边查找运算符的位置,如果等式左边不含有运算符,说明是运算符被擦掉了,如果是运算符被擦掉,那么就根据问号的位置重新分割出a和b。首先是这个欧拉函数,要知道欧拉函数 φ(n)是求从1到n有多少个数与n互质的。记得nums是整型数组,与res 进行运算的时候记得转换单位。如果等式左边含有运算符,那么就根据运算符位置来分割a,b。

2025-04-10 21:36:49 456

原创 特辣的海藻!15

用一个HashMap来存储每个时间点有订单的外卖店。用一个布尔数组,每个时间点遍历所有的外卖店,如果满足要求就标记为true,反则反之。我那60%错在没有正确处理每个时间点没有订单的外卖点和记录结果的数组。就是用一个set集合,有订单处理过的就加进去相当于做了个标记,妙哉妙哉。那就在每个节点上加上从起点到这个点的路径一路记下来,这样就不需要前驱数组记录节点然后最后反向构建路径了。这个题目很有意思的点就是后缀表达式可以通过括号隐含该改变运算顺序。这个题目吧,,就是模拟,考验对代码和数据结构的掌握熟练度。

2025-04-07 18:35:33 364

原创 特辣的海藻!14

是一个广度搜索遍历。● i & (1 << j):将 i 与掩码进行按位与操作,结果是一个只有第 j 位可能位1的数字。还是有规律的 要找规律啊,,需要打印N行两M的单元格,那么这个表格按照线来数的行和列就是。● 1 << j:将数字 1 左移 j 位,得到一个只有第 j 位为 1 的掩码。i ^ (1 << j) 可以切换整数 i 的第 j 位的值(0变1,1变0)i | ( 1 << j ) 可以将整数 i 的第 j 位设置为1。i & ~(1 << j) 可以将整数 i 的第 j 位设置为0。

2025-03-24 08:53:34 925

原创 特辣的海藻!13

所以当第一只蚂蚁向右移动的话,那么从右向左走的蚂蚁肯定都会被感染,那为什么还要加上从左向右的蚂蚁呢,它们与第一只蚂蚁的移动速度相同,也不会相遇啊。两只蚂蚁碰头了,就同时的于是转身向大海走去~~~,你也要转头我也要转头,你走我本来要走的路,我走你本来要走的路,都是一样的,只不过不是同一只蚂蚁,但是这在我们看来没区别,所以可以不用管,直接穿过去。● 因此,1 + (n-1) % 9 的结果是 1 到 8,与 n % 9 一致。● 因此,1 + (n-1) % 9 的结果是 9,与数字根的定义一致。

2025-03-20 08:41:18 1076

原创 特辣的海藻!12

所以在中位数这个位置上,也就是对于刷了中位数个题的这个同学,全班刷题比他多的数等于全部刷题比他少的数,如果一个数字大于中位数,在中位数的右边,那么说明他本身就满足全班刷题比他多的数不超过(少于等于)刷题比他少的数;法一是我能够看懂得方法,但是只能过百分之五十,它的思路就是对于每个数,如果他比中位数小,说明他还没有满足全班刷题多的人不超过(少于等于)刷题比他少的人。中位数的定义是将一组数字从小到大的排列,位置位于中间C位的数字,如果一共有偶个数字,那么就是中间两个数字的平均值,或者是两个数字中的一个。

2025-03-18 07:25:06 971

原创 特辣的海藻!11

right是当前已清扫的最右边界,如果right >= left,说明当前急切人清扫范围与已清扫范围有重叠,可以继续扩展,否则。说明当前机器人的清扫范围无法覆盖到已清扫范围,也就是当前机器人清扫到达的左边界都不能到达上一个右边界,上一个机器人清扫的右边界与当前机器人清扫的左边界之间是无法清扫到的,步数 t 不足。这个题的暴力思路就是,从1开始从小到大枚举步数t,一旦步数 t 满足每个机器人左右走步数 t 可以覆盖全部区域,那么就立即返回输出答案,这样就是最少的花费时间,因为要来回吗 所以是两倍。

2025-03-15 11:36:47 365

原创 特辣的海藻!10

str[j],最长回文子序列要么不包含str[i](对应dp[i+1][j]),要么不包含s[j](对应dp[i][j-1])取两者最大值作为当前子串的LPS长度。情况1:两端字符相同,如果str[i] == str[j],则这两个字符可以加入回文子序列,dp[i][j]的值等于去掉两端后的字串str[i+1...j-1]的最长回文子串加2(因为新增了两个字符)属于Character类,这是一个静态方法,用来获取给定字符的数字值,对于大多数字符,特别是非数字字符,这个方法返回-1。

2025-03-13 23:01:24 809

原创 特辣的海藻!9

求称出一个数N,从1到N的连续数字的数量。每一个内循环的起点,是上一个循环的当前值,这样可以满足题目的条件 a<=b<=c<=d,然后这样又不会重复搜索已经不可能的值 比如b>c的。用一个HashSe(lines)t存储两点确定的直线,用一个HashMap存储这个网格所有的点,每两个点直接计算斜率,用斜率k和截距b代表一条直线,放到lines中,如果k和b值一样。我们可以发现这个数就是要找可以被整除的三个数的各种组合,那怎么优化呢,那三个数肯定都是这个数的因子嘛,我们遍历他的因子看符不符合条件就好了。

2025-03-10 23:03:17 876

原创 特辣的海藻!8

放的皇后个数加1,列加1,为什么不行加1,因为我们要模拟所有的格子,模拟每种情况,不能漏掉。因为是深度优先遍历,是一定会一行一行的遍历下去的。当u>n的时候,说明已经遍历到最底层,我们可以开始模拟放皇后,一层一层返回了。N皇后的思路就是,按照行的顺序,以每一行的视角来看每一列,这样来遍历每一个格子是不是能放皇后,u记录当前放的是第几个皇后。当x==n时u==n,说明在最后一行,最后一个皇后也放好了,说明当前这个矩阵就满足条件了,可以输出了。有n个位置放数字,第一个位置的数字放好之后,还有n-1个位置。

2025-03-05 22:43:06 468

原创 特辣的海藻!7

我就是没有理解领会到到底应该怎样移动这个窗口,是要一个一个移动窗口,逐个元素的扩展有边界,而不是不满足状态时才移动,这样跳跃式移动会错过可能的答案。还有是用的变量记录数组长度,然后自以为的更新长度时没问题,先缩小窗口,再记录长度就出错。应该要先记录此时窗口的长度,再缩小窗口。超时 超时 超时 超时 超时 超时 超时 超时 超时 超时 超时 超时 超时 超时 超时 超时 超时。● 实时记录滑动窗口的长度,用窗口的端点 [j, i],即 j-i+1,而不是用一个变量。做过的题,再一次做,还是有问题。

2025-03-02 23:04:32 337

原创 特辣的海藻!6

一共要寻找三个数使得它们的和最接近目标值,那么剩下两个指针,在除开元素 i 的数组中,一个左指针指向最小的元素,一个右指针指向最大的元素。循环结束后,找到最接近的三数之和。看看正确的写法,循环结束后,q指向的是C数组中第一个大于B数组的元素,那么剩下的所有元素都大于此时B数组中这个元素,共有n-q个。首先我们要知道需要有多少位来放这个数字,怎么知道这个数字的二进制形式的位数呢,因为我们是按顺序拼接这个二进制的嘛,那我们就要一个变量cnt不断累加计数它的二进制个数来记录当前这个数以二进制形式放,要占多少位。

2025-03-02 09:41:01 912

原创 特辣的海藻!5

循环n次,这样结束的时候,(x, y)记录的就是第二个点的坐标。进入循环后,从坐标(1, 1)开始遍历【起点是(1, 1)】当遍历到横坐标 x 到达宽度时,即 x == w+1,直接把x定位在w,改变方向,继续按数字顺序向前找到第一个点n,用(a, b)记录。继续这样,循环结束的时候找到第二点。解决思路是这样的:有num瓶饮料,一次性全部喝掉,那么就留下num个空瓶子,这num个空瓶子抱团3个为一组可以兑换1瓶喝的,下次喝。用一个循环模拟就好,注意求第n-1项与第n项的差,只需要求n-1次。

2025-02-27 07:44:30 701

原创 特辣的海藻!4

应该是找到第一个和最后一个不是lqb的字符位置,然后判断剩下的是不是回文字符串,剩下的也是的话那就可以进行转换,剩下的不是那没办法咯,因为剩下的字符串不是lqb三者之中的,是怎么也构不成回文字符串的。● 转换为字符串或其他类型(toString,intValue,longValue等):将BigInteger转换为其他形式以便于显示或进一步处理。然后七个人之间不能握手,减去这七个人所构成的完全连通图的边:7 * (7-1) / 2 = 21。● 绝对值(abs):返回当前BigInteger的绝对值。

2025-02-25 22:32:39 849

原创 特辣的海藻!3

统计二进制中1的个数是否为1。如果大于0并且二进制中只有一位1,是整数就是2的幂次。所以当余数为0时,需要将商调整为 (num-1)/26,避免多算一轮进位。两个数的对应二进制位不同时结果为1,相同时为0。这个的关键点就是,Excel进制是A~Z,对应1~26。将二进制位整体右移,左侧补符号位(正数补0,负数补1)|:两个数的对应二进制位有一个为1,结果位即为1。&:两个数的对应二进制位均为1时,结果位才为1。1,进行位运算 n&(n-1) 后结果为0。对一个数的每一位取反(0变1,1变0)

2025-02-24 23:40:01 438

原创 特辣的海藻!2

数字字符‘0’到‘9’的Unicode值是从48到57,大写字符‘A’到‘Z'是65到90,小写字母‘a’到‘z’是97到122。所以如果有一个包含数字、大写和小写字母的字符数组,排序后会是数字先出现,接着是大写字母,最后是小写字母。● 支持的范围:包括ASCII数字(0-9),还包括Unicode中其他语言中的数字字符(如全角数字0-9)字符数字的Unicode值与字符'0'的Unicode值之差就是对应的整型数字。将整型数字加上字符'0'的ASCII值,可以将其转换为对应的字符数字。

2025-02-23 22:44:05 939 1

原创 特辣的海藻!1

Collection.reverseOrder() 返回一个降序比较器,适用于对象数组(如Integer[ ]、String[ ]),对于基本类型数组(如int[ ] ),需要先将其转换为对象数组(如Integer[ ] )● 在使用nextLine()之前,如果调用了nextInt()、nextDouble()等方法,需要额外调用一次nextLine()来清除缓冲区。● next()会忽略输入中的空白符(如空格、制表符等),而nextLine()会读取整行内容,包括空白符。

2025-02-22 11:01:03 919

原创 58.哀家要长脑子了!

怎么判断是不是不开心的朋友:首先遍历每一个朋友x,找到与它配对的朋友y,获得它们之间的亲密程度,此时要看看是不是能找一个朋友u出来,朋友u有一个配对的朋友v,u与x的亲密程度比u与v的亲密程度还要高,也就是u把x排在v的前面。边和右边进行判断,如果它的左边或者右边已经有一组长度为m的1,那么这个位置再变成1,那满足m个长度的一组1的数量就要减少,我们记录操作的次数,当数量减少为0的时候就可以返回。其实不用太在意过程,因为每次转圈走过的地方都会加上经过的次数,贡献的力量都是一样的大小。

2024-11-19 21:32:19 358

原创 57.哀家要长脑子了!

如果只需要连续1次大于,那么就是前两个数字大的那个。如果遍历完一遍这个数组还没有找到连续胜利k次的数字,那么就是此时记录的胜利次数最多的那个(即最大的),因为它会从现在开始一直处于第一位,它会一直赢,直到胜利k次。换个意思就是找到一个数,它连续k次比数组大于后面的数字。为什么从i=2开始,因为在初始化pre的时候就相当于已经比过一轮了,不要重复比较会出错。其实不是很想动脑子、、有无痛长知识动脑子的方法吗。没有算了还是动脑子吧。

2024-11-16 22:08:02 333

原创 56.哀家要长脑子了!

这道题的思路是这样的,最后喝水的数量res应该初始化为numBottles,一开始有多少瓶水全喝了。接着只要空瓶的数量小于规定的兑换水瓶数量(numExchange),我们就可以循环进行以下操作:每次可以兑换多少个水瓶(这次可以喝多少瓶水,会产生多少个空瓶),空瓶数量的更新(这次产生的新的可以喝的水 + 剩余没有兑换的空水瓶)这道题是干了这么一件事情,在P数组里依次按序查找queries中的元素,找到之后就把P数组中的该位置到第一个元素这部分都后移,这个位置pos的函数放到数组第一个。

2024-11-13 07:18:14 269

原创 55.哀家要长脑子了!

这个每一次的时间是往返121212..的,可以观察一下发现,走第奇数次的时候时间是1秒,走偶数次的时候时间是2秒,如何判断是奇数次还是偶数次,就看坐标。那么对于每一个元素,我们有两种选择,不去掉他和去掉他,算出两种情况下的最小公倍数和最大公因数。3. 计算最大公因数的变量初始化为0,因为任何非零整数a与0的最大公因数都为该非零整数a。2. 计算最小公倍数的变量要初始化为1,因为0的跟任何数的公倍数都是0,初始化为0会导致计算 所有的最小公倍数始终为1。字符转整形 -'0',整形转字符 +'a'。

2024-11-04 08:36:19 318

原创 54.哀家要长脑子了!

这道题的思路是这样的:如果经过一次完整走位最终回到原点,显然平面存在环使得机器人永远无法离开,返回true。如果经过一次完整走位没有回到原点,那么就要看它的朝向,只要不是跟机器人一样在起点面朝北方最终经过多次完整走位还是会回到原点的。每个小朋友都分到比上次多一个的糖果,如果剩余的糖果不能满足比上次多一个,就把剩余的糖果全部给这个小朋友。所以一个+=,一个-=。用i%num_people实现循环数组。有暴力方法,和暴力优化,还有一个核心思想是:一个奇数必然是等于一个偶数加一个奇数之和。

2024-11-03 16:40:37 406

原创 53.哀家要长脑子了!

其实看了题解之后,感觉以前做过类似的。主要是注意用index来记录怎么判定符号。蠢蠢的用四个一组循环。

2024-10-28 22:58:51 254

原创 52.哀家要长脑子了!

当遍历到0的时候,将0放到此时0可以放的位置,如果此时p0小于p1说明什么,说明之前已经处理好0 和 1了,最后一个0后接着就是1,现在交换过后肯定就把一个1给换到后面去了,所以要额外操作一次换回来。dp[0][nums[0]]:如果只考虑前0个元素即元素nums[0],当其目标总和为nums[0]时也是存在这样的子集满足要求,即nums[0]3.分成的两个子集各自的元素和都要等于nums元素总和的一半,如果最大的元素值还要小于这个一半,那肯定也是不行的。把0 和 1排好剩下的2就不用管了。

2024-10-28 21:40:33 542

原创 51.哀家要长脑子了!

重复 模拟 要求覆盖在最上面的地毯编号,用四个数组abgk分别记录地毯起点的左下角横纵坐标,地毯的长度宽度,输入的坐标x y 当它满足大于等于左下角坐标 并且 小于等于 地毯左下角横纵坐标的时候,就表示它在这个地毯上了 一直遍历完所有输入的地毯,最后就是覆盖在最上面的地毯。其实一个点下桥的最近距离就是转头直接下去,最远就是走到对面去,但因为题目要求相遇要转身给了干扰,但是,其实也还是可以看成相遇的时候不用转身继续往对面走,因为继续走不转身相当于对面的士兵帮你把你自己转身之后的路走了,这样子就简化了。

2024-10-08 22:10:00 487

原创 50.哀家要长脑子了!

吃苹果分为两个阶段,第一个是在1-n天内,第二个阶段时n天之后,n天之后可以吃掉的苹果数量由剩余可以吃的日期和苹果数量中的较小值决定。贪心贪在哪里,贪在如果这个nums1元素不能满足大于最小的nums2元素的话,的话那就直接把它放在nums2最大元素的位置,但是这个nums2元素的位置不能改变,用一个数组来记录nums2从小到大的元素及其对应下标。我感觉准备蓝桥杯的时候,做过类似的,我以为的贪心是把优先匹配差值最小的对应nums1元素,然而并不是。我真的不知道到时候我要怎么去过这个认证,我的天爷。

2024-10-03 22:58:35 357

原创 49.哀家要长脑子了!

第三层for循环用来比较每个仓库的编码,第一列第二列... ,在可能的上级仓库j 中,只要当下的仓库i 有一列不符合要求(大于上级仓库编码),那都是不行的,直接不用比较这个上级仓库j 的其他列,跳出这个循环,进入下一个j循环,比较下一个可能的上级仓库。其实吧,我看了答案,慢慢看懂之后,感觉这个题目也不难,但是我又没想出,还是对代码的掌握能力太弱了,这句话五个月之前就说过,五个月后还说,,无地自容。还是我太依赖答案了吗?第一层for循环用来找答案,有四个答案要找,定位每个仓库,给每个仓库找一个上级仓库出来。

2024-10-02 22:26:15 363

原创 48.哀家要长脑子了!

摆动序列是什么,什么是摆动序列,就是差值正负正负的来,最后要求摆动序列的子序列的长度的话,统计这个来回有多少次就好,没必要硬是把摆动序列数组求出来,想什么呢你!dp[i]:凑齐金额 i 所需要最少的硬币,初始化为一个比较大的数,用来判断最后是否有硬币可以来凑齐这个金额,补药用INT_MAX,他参与计算的时候很可能会溢出。我觉得这个贪心就贪在眼前,对于一个学生的成绩,我只要看他相邻的学生就好,让他与相邻的学生满足条件,因为要最少的糖果,分糖果的时候也是1个1个加。我感觉我的阅读理解能力不好。

2024-10-01 21:19:11 586

原创 47.哀家要长脑子了!

设定买入股票的时候交手续费。需要注意的是当卖出股票时,买入下一支股票时,更新为股票的价格而不用加上手续费,要不然买的话会加上两次手续费。每个为选择最大的,如果前一位比后一位大,就要把前一位减去1,因为要最大的嘛,一点点减,然后剩下的都变为9,因为要最大的嘛!贪心怎么贪,每次选择的股票使得收获得利润最大。那么当后面的股票比前面的股票大的时候就可以卖出去,这样子积累下来的利润就是最大利润。

2024-10-01 20:29:10 314

原创 46.哀家要长脑子了!

其实我觉得这道题中贪心和动态规划的本质思想是一样的,都是在以区间的右端点升序排序后,比较前一个区间的右端点和后一个区间的左端点大小,以此来判断两个区间是否重叠。而是在每一次的比较后,遇到非重叠的区间,将旗帜right变量中的右端点不断迭代更新。实际上本质就是找最长的无重叠子序列,那么我们可以遍历这个区间的集合,只要前一个区间的右端点是小于等于后一个区间的左端点,那么这两个区间就不是重合的。每一个区间的计算可以根据上一个区间的情况结合现在区间加入的情况来计算。这就是动态规划的思想体现。

2024-09-23 21:59:24 377

原创 45.哀家要长脑子了!

对于数组中的每一个元素,可以假设它至少构成长度为1 的递增子序列(即自身)。当nums[j]大于nums[i]的时候,可以将nums[j] 加入到以nums[i] 为结尾的递增子序列中。注意,binsearch函数中是nums[mid]

2024-09-18 16:13:44 330

原创 44.哀家要长脑子了!

对于每个遍历到的当前元素,如果之前的数组和加上它要大一点那就更新加上,如果当前加上当前元素,答案数组还减小了,那就从当前元素开始,要满足子数组的定义啊。偷n所房子可以根据偷1所,偷2所,偷3所......偷k所求得(当k=n的时候就可以求得答案)当只有0间房子的时候,dp[0] 为 0,只有一中选择,一间都偷不了。当只有1间房子的时候,dp[1] 为 1,只有一种选择偷这一间。方案2:偷前k-2所,第k-1所不偷,第k所偷。不断把当前的答案与之前的pre数组更新。方案1:偷前k-1所,第k所不偷。

2024-09-18 15:31:33 251

原创 43.哀家要长脑子了!

第一个return 是当索引超出候选范围时停止,避免无效的递归。第二个return 是已经找到一个结果,该分支下没有再找的必要。是重要的一步,回溯的核心思想就在这里了,它帮助我们撤销选择,是算法尝试其他的组合。对于这类寻找所有可行解的问题,都可以尝试使用 [搜索回溯] 的方法。以下是朴素不减脂的方法,我昨天吃了个干煸炒面,巨朴素。一点都不减脂,但是很好吃~~~玛雅 这有好多种方法,用最简单的递归会超时。其实我觉得这是一道中规中矩的递归搜索题。

2024-09-15 09:39:50 252

原创 遗传算法Github初学

遗传算法的理论是根据达尔文进化论而设计出来的算法:人类是朝着好的方向(最优解)进化,进化过程中,会自动选择优良基因,淘汰劣等基因遗传算法(genetic algorithm——GA)是计算数学中用于解决最佳化的搜索算法,是进化算法的一种。进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传、突变、自然选择、杂交等。适应度循环以上步骤直至找到满意的解交叉概率:两个个体进行交配的概率。例如,交配概率为0.8,则80%的“夫妻”会生育后代。变异概率:所有的基因中发生变异的占总体的比例。

2024-09-04 20:11:26 1217

原创 42.哀家要长脑子了!

返回告诉父节点,基于当前这个结点的的最长路径是向左侧走还是右侧走。把左边能走的最大长度找出来,把右边能走的最大长度找出来,答案是二者之和。哎,其实懂也懂,但是自己想不出来。深度优先搜索,看边两端的结点是不是一样的值。

2024-09-03 22:50:06 277

原创 41.哀家要长脑子了!

判断输入串中的现在遍历到的字符是不是字母,是的话就把它转换为小写字母,然后放到一个字符串中,整个输入串遍历完毕后,再新生成一个字符串是刚刚生成字符串的逆序 判断两个是否相等就好。题目中有限制:数组中的元素只会出现一次或者两次,那么依次与0进行异或,出现一次的会把0异或成本身,出现两次的会把0异或成0,让它可以接着跟其他元素异或。后,pre指向的就是root左子树的根节点,即root的左孩子,在二叉搜索树中,左孩子要小于根结点,凡是不满足这条的就不是二叉搜索树。根据二叉搜索树的性质,进行中序遍历,经过。

2024-07-28 15:46:54 581

原创 40.哀家要长脑子了!

只要不满足题目中的条件的时候就弹出栈顶元素 (tt--)保证这个栈中的一个单调性。

2024-07-17 22:58:24 195

原创 39.哀家要长脑子了!--用数组模拟指针的单链表与双链表

【代码】39.哀家要长脑子了!--用数组模拟指针的单链表与双链表。

2024-07-15 22:32:15 178

原创 38.哀家要长脑子了!--离散化

4.移动重复元素:当发现两个相邻的元素相等,会将后面的重复元素向序列的末尾移动,覆 盖到它遇到的第一个重复元素(也就是不重复序列的最后一个元素的后一位)3.比较相邻元素:从序列的起始位置开始,将每个元素与其紧邻的前一个元素进行比较。1.arr.erase(m):就是把 arr中第m+1个数字开始的,到结尾全部删除(包括m+1),而是通过移动操作将重复的元素移 动到序列的某个末端位置,并。所以就需要用到离散化,使用一个新容器alls,这个里面的元素就是原来数组的下标。

2024-07-14 21:00:56 452

原创 37.哀家要长脑子了!--层序遍历

获取队头结点node,将队头结点出队,将node的值放入数组storey中,然后把node的左右孩子先后加入队列中,结束队列循环的大小后就把所新建的数组storey放到返回的结果数组中。我又想在这个基础上结点的右结点为空左结点不为空时才把这个结点入队。不知道自己的脑子用什么做的。要弄清楚数据结构,每个结点有两部分,一个是结点的元素值val,一个是Node结点数组children,children里面存储的也就是该结点的孩子,我们要遍历每个结点的孩子,就要把这么多的孩子在操作这个结点的时候,把孩子们入队。

2024-07-12 18:05:08 831

原创 36.哀家要长脑子了!--前缀和&差分

想象差分数组中的每个元素代表了一段“坡度”,前缀和则是沿着这些坡度从起点走到当前位置的累积高度变化。差分数组用来间接表示这个序列,当对原数组的区间进行修改时,只需要对差分数组的起始、结尾位置分别进行一次修改就好。s[i] = a[1] + a[2] + a[3] + ... + a[i] 即。差分数组中的元素就是这个元素跟它的前一个元素的差值,比如。可以直观的看到对差分数组进行前缀和操作就可以得到原数组。差分数组:[1, 1, 0, -1, 1, 1]原数组:[1, 2, 2, 1, 2, 1]

2024-07-08 22:07:50 308

空空如也

空空如也

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

TA关注的人

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