- 博客(47)
- 收藏
- 关注
原创 代码随想录算法训练营第52天|孤岛的总面积、沉没孤岛、水流问题、建造最大岛屿
思路:从周边找到陆地然后 通过 dfs或者bfs 将周边靠陆地且相邻的陆地都变成海洋,然后再去重新遍历地图 统计此时还剩下的陆地就可以了。思路一:直白的遍历。遍历每个点,然后看这个点能不能同时到达第一组边界和第二组边界。思路二:从第一组边界逆流而上,第二组边界也逆流而上,然后同时标记过的点就是答案。第二步:遍历每一个0的方格,并统计其相邻岛屿面积,最后取一个最大值。第一步,则遍历地图,并将岛屿的编号和面积都统计好。
2025-05-21 20:00:35
146
原创 代码随想录第51天|岛屿数量(深搜)、岛屿数量(广搜)、岛屿的最大面积
版本二:不管节点是否合法,上来就dfs,然后在终止条件的地方进行判断,不合法再retur。版本一写法:下一个节点是否能合法已经判断完了,但是版本一比版本二要高效,避免了无用的递归。
2025-05-16 21:54:24
272
原创 代码随想录算法训练营第50天|图论基础&&广搜&&深搜、所有可达路径问题
二维数组表示图结构,几个节点,就申请多大的二维数组。能保存我们要遍历过的元素的容器就可以,
2025-05-15 21:45:05
196
原创 代码随想录算法训练营第49天|leetcode42.接雨水、leetcode84.柱状图中最大的矩形
如果数组本身就是升序的,例如[2,4,6,8],那么入栈之后 都是单调递减,一直都没有走 情况三 计算结果的哪一步,所以最后输出的就是0了。同理,如果遇到相同的元素,需要先将栈顶元素弹出,然后相同的元素再入栈。显然,计算凹槽的时候选取相同元素的右边的作为凹槽的最左端。每个柱子可以向左右两边扩展,但是只能扩展到比自己矮的柱子,最大面积就是该柱子的高度乘左右扩展的距离。整体思路与接雨水是一样的,只不过一个找两边最大的,这个找两边第一个小的。单调递减栈,出栈的时候,证明找到右侧大的,也就是形成如下的凹槽。
2025-05-14 22:07:47
375
原创 代码随想录算法训练营第48天|leetcode739. 每日温度、 leetcode496.下一个更大元素 I 、leetcode503.下一个更大元素II
其实本题的思路和上面的类似,本质上都是每日温度问题,不过本题映射方面和初始化需要稍加处理。没有重复元素,我们就可以用。根据数值快速找到下标,还可以判断nums2[i]是否在nums1中出现过。直观的方法之一就是将两个数组拼起来,但是。
2025-05-13 19:30:35
181
原创 代码随想录算法训练营第46天|leetcode647. 回文子串 、leetcode 516.最长回文子序列
如果s[i]与s[j]不相同,说明s[i]和s[j]的同时加入 并不能增加[i,j]区间回文子序列的长度,那么分别加入s[i]、s[j]看看哪一个可以组成最长的回文子序列。对于遍历顺序,通过递推关系式的观察,可以看到是从下到上从左到右遍历。首先确定回文串,就是找中心然后向两边扩散看是不是对称的就可以了。,那没啥好说的了,dp[i][j]一定是false。遍历顺序:从下到上&&从左到右(由递推关系时得到的)一个元素可以作为中心点,两个元素也可以作为中心点。注意一点:这里关于j的初始化的事情,
2025-05-12 20:35:16
272
原创 代码随想录算法训练营第45天|leetcode115.不同的子序列 、leetcode583. 两个字符串的删除操作 、leetcode 72. 编辑距离
首先是两层循环,外层循环表示遍历s串,当s[i-1][j-1]的时候,有两种情况,第一种情况用s[i-1]和t[j-1]去匹配,此时就需要 dp[i - 1][j - 1]。但是s[i-1][j-1]的时候,也可以用s[i-2]和t[j-1]去匹配。除此之外,比如编辑距离类的问题找状态转移的方法:要不抓对角线,要不抓dp[i-1][j]或者dp[i][j-1]。dp[i][j]:以i-1为结尾的字符串word1,和以j-1位结尾的字符串word2,想要达到相等,所需要删除元素的最少次数。
2025-05-12 16:24:02
279
原创 代码随想录第44天|leetcode1143.最长公共子序列、leetcode1035.不相交的线 、leetcode53. 最大子序和 、leetcode392.判断子序列
即每次遍历从当前nums[i]与累加的最大值去做比较,取最大的值作为新的sum,并和res做比较。但是最后不能返回sum,因为随着sum+nums[i]的比较,大的sum会被覆盖掉,所以还要用res去保存最大更新的sum。,思路和上面差不多,但是最开始result的赋值部分出现问题,赋值成了INT_MIN,所以造成dp[0]的结果没有参与比较...的区别如下:引入最长重复的序列,所以如果序列断了,dp[i][j]要置0。这题乍一看好像挺抽象的,但是当我们细想就会发现这道题和上面的题一样。
2025-05-09 16:29:11
403
原创 代码随想录算法训练营第43天|leetcode300.最长递增子序列、leetcode674.最长连续递增序列、leetcode.最长重复字数组
所以对于dp[i][0]或者dp[0][j]都是没有意义的,所以dp数组的含义要定义为:dp[i][j],以。本题贪心相比动态规划而言,要简单不少。因为只需要记录最大的cnt就可以,每一次循环都去判断是不是递增的,如果是递增的,方法一:我的复杂做法,运用了两层循环,之所以做的这么麻烦,是因为刚刚做完上面的题目,有了思维定势。dp[i][j]都是由dp[i - 1][j - 1]推出。,也就是dp[j]都是由dp[j - 1]推出。方法二:一层循环的动态规划:但其实,既然是。但是通过代码可以发现,
2025-05-08 16:23:23
386
原创 代码随想录算法训练营第42天|leetcode188.买卖股票的最佳时机IV、leetcode309.最佳买卖股票时机含冷冻期、leetcode714.买卖股票的最佳时机含手续费
本题和前几个题的思路大体相似,只不过涉及到交易之后还要给手续费的问题,所以写状态转移方程的时候,还要考虑fee。类似,只不过上个题把k固定为2,本题为k,所以初始化和下面的递推关系式相似。本题包含了冷冻期,所以我设置了三个状态:1.本题的大体思路和相似。
2025-05-07 18:05:44
134
原创 代码随想录算法训练营第41天|leetcode121.买卖股票的最佳时机、leetcode122.买卖股票的最佳时机II 、leetcode123.买卖股票的最佳时机III
所以dp[4][4]已经包含了dp[4][2]的情况。思路1:动态规划,dp[i]表示第i天的最大利润,同时dp[i] = max(dp[i-1],prices[i]-min_price),并且不断更新最小价格。,有两种情况,所得最大现金要不和昨天持有股票一样,要不就今天入股的,也就是在昨天的最大现金的基础之上花prices[i]的钱去入股。,也有两种情况,要不和昨天不持有股票一样,要不就把以前买的股票在今天抛售掉。思路2:贪心算法,下面的贪心算法的总体思想和上面的一维数组的思想大同小异。
2025-04-29 21:16:57
342
原创 代码随想录第39天|leetcode198.打家劫舍、leetcode213.打家劫舍II 、leetcode337.打家劫舍III
思路:首先将根节点传入函数,如果当前节点为空,返回<0,0>,然后进行二叉树的后序遍历。自底向上进行遍历,分两种情况讨论,如果偷取cur,那么就不偷左右节点。如果偷取cur,那么偷取较大的左右节点,代码如下所示。所以dp数组(dp table)以及下标的含义:下标为0记录不偷该节点所得到的的最大金钱,下标为1记录偷该节点所得到的的最大金钱。当前房屋偷与不偷取决于前一个房屋和前两个房屋是否被偷,所以就可以得到相应的dp数组。这里有个点:对于情况2或者情况3,
2025-04-29 17:48:20
243
原创 代码随想录算法训练营第38天|leetcode322.零钱兑换、leetcode279.完全平方数、leetcode139.单词拆分
这道题和上面的题类似,几乎一样。但是由于上题的初始化有点晕,所以如果是求最小数量,就初始化成INT_MAX,然后遍历。依然是完全背包的经典应用,本题并不强调集合是组合还是排列。
2025-04-05 21:17:32
250
原创 代码随想录算法训练营第37天|完全背包理论基础、leetcode518.零钱兑换2️⃣、leetcode377.组合总和5️⃣、爬楼梯进阶
如果把遍历nums(物品)放在外循环,遍历target的作为内循环的话,举一个例子:计算dp[4]的时候,结果集只有 {1,3} 这样的集合,不会有{3,1}这样的集合,因为nums遍历放在外层,3只能出现在1后面!那么就是先把1加入计算,然后再把5加入计算,得到的方法数量只有{1, 5}这种情况。而不会出现{5, 1}的情况。第i件物品的重量是weight[i],得到的价值是value[i]。假设:coins[0] = 1,coins[1] = 5。这道题没什么难的,但是遍历方式的变化有点儿别扭。
2025-04-03 20:55:34
382
原创 代码随想录算法训练营第36天|leetcode1049.最后一块石头的重量、leetcode494.目标和、leetcode474.一和零
只不过物品的重量有了两个维度而已。物品就是strs里的字符串,背包容量就是题目描述中的m和n。应该担心计算的过程中向下取整有没有影响。例如sum是5,target是2 的话其实就是无解的。这里的x,就是bagSize,也就是我们后面要求的背包容量。类似,但是那道题求的是背包是否装满,这道题求的是背包最多可以装多少。没做出来,好像用回溯法或者动态规划都可以做出来。这道题给我的感觉和昨天的。
2025-04-02 22:31:13
161
原创 代码随想录算法训练营第35天|背包问题、leetcode.416分割等和子集
所谓滚动数组,就是把上一行的数据压缩到一起。方法一:回溯法,但是会。
2025-04-01 20:15:12
226
原创 代码随想录算法训练营第34天|leetcode62.不同路径、leetcode63.不同路径2️⃣、leetcode343.整数拆分、leetcode96。不同的二叉搜索树
根据上述代码可以发现,dp[i-1][j]只依赖于上一行状态的代码。所以可以优化成一位数组。首先初始化代码,因为第一行都是1;思路2:下面的代码和上面的,就是递归方程变了一下,不过下面的相当于把上面的dp[i]*dp[i-j]拆开了。需要举例,画图,分析,才能找到递推的关系...复杂。思路1:动态规划--》二维数组。
2025-03-31 21:49:15
254
原创 代码随想录算法训练营第32天|leetcode
思路:首先定义dp数组含义,然后初始化,然后构造递推方程。思路2:优化,仅开辟两个数组空间就够了。
2025-03-29 16:14:42
208
原创 代码随想录算法训练营第31天|leetcode56.合并区间、leetocode738.单调递增的数字
思路:合并区间或者区间重叠类问题貌似是一样的呢。也就是设置左右指针,然后遍历下去,如果。,那么就取他俩的最大值作为新边界,循环往复,最后压入数组当中。但是对于最后一组数,strNum[i - 1]--,然后strNum[i]给为9。,所以最后还需要单独压一遍~
2025-03-28 21:35:30
249
原创 代码随想录算法训练营第30天|leetcode452.用最少数量的箭引爆气球、leetcode435.无重叠区间、leetcode763.划分字母区间
其实重叠算法就是说:已有的右边界与新的边界的左边界相比,如果没有重叠,就更新right,否则(发生重叠),right = min(right,intervals[i][1]),取最小其实还是贪心。这道贪心我是有思路的,也就是说首先统计每个元素的最远到达的地方。贪心题目有时候就是这样,看起来很简单,思路很直接,但是一写代码就感觉贼复杂无从下手。首先遍历整个字符串s,设置左右指针,右指针是为了找到之后与索引做差,从而或者分割点之间的距离的。思路:这道题运用双指针,如果left>right,就计数。
2025-03-27 16:25:07
344
原创 代码随想录第29天|leetcode134.加油站、leetcode135.分发糖果、leetcode860.柠檬水找零、leetcode406.根据身高重建队列
从头开始遍历,设置cursum,然后开始累加,如果cursum<0,证明所有从前面来的出发的车开到这里都会没油,所以这个时候cursum = 0,同时从这个的后一个加油站作为起始点(start)接着遍历。外面的for模拟开始的加油站,如果有余,那就以那个为起点,遍历一圈,如果转一圈依旧有余,那么返回i,否则返回-1.然后再插入到数组当中。思路:这道题目一定是要确定一边之后,再确定另一边,例如比较每一个孩子的左边,然后再比较右边,这样从局部最优推出了全局最优,即:相邻的孩子中,评分高的孩子获得更多的糖果。
2025-03-26 21:08:53
380
原创 代码随想录算法训练营第28天|leetcode122.买卖股票的最佳时机2️⃣、leetcode55.跳跃游戏、leetcode45.跳跃游戏2️⃣、leetcode1005.K次取反后最大化的数组和
优化:由于题干已经说肯定能到达最后那个位置,所以如果可以到nums.size()-2下标对应的位置的话,如果i==cur,那么意味着还差一步就可以到达终点,ans++;=cur,那么意味着本来就可以到达终点。只要遇到了大于0的数,判断k的奇偶性,如果k为奇数,就把那个正数取相反数。如果移动下标达到了当前这一步的最大覆盖最远距离了,还没有到终点的话,那么就必须再走一步来增加覆盖范围,直到覆盖范围覆盖了终点。排完序之后=> [-8,-5,-5,-3,-2,3] => [8,5,5,3,2,-3]
2025-03-25 21:57:52
331
原创 代码随想录算法训练营第27天|leetcode455.分发饼干、leetcode376.摆动序列、leetcode53.最大子序和
不赘述,思路很简单了。但是我下面写复杂了....这么简单的题写的这么复杂...没有保持循环不变量。饼干和胃口同时变了,得固定一个。比如说 1 -2 3. 3比-1大的话,sum直接就🟰3.然后每次这个局部最优的sum与全局的res去比较。所以下面固定了胃口,用饼干去循环,如果s[i]>=g[idx],再移动到下一个孩子的胃口。从局部最优转向全局最优。
2025-03-24 21:53:06
371
原创 代码随想录算法训练营第25天|leetcode
1.思路:如下优化方法:使用数组替换哈希表。2.3.。nums[i] == nums[i-1] 且 used[i-1]==1:说明同一树枝上有重复元素,可以重复选取nums[i] == nums[i-1] 且 used[i-1]==0:说明同一树层上有重复元素,不可以重复选取。
2025-03-22 11:53:41
398
原创 代码随想录算法训练营第24天|leetcode93.复原IP地址、leetcode78.子集、leetcode90.子集2️⃣
erase(pos,len)和substr(pos,len)思路:这道题不是很难,但是细节问题出了好多错误。思路1:就是和第二题的思路多一个。isIP函数中的非法IP的控制。把所有节点都记录下来。
2025-03-21 15:59:08
229
原创 代码随想录算法训练营第23天|leetcode39.组合总和、leetcode40.组合2️⃣、leetcode131.分割回文串
我放在了没层for循环的的结尾,如果该层的candidates[i]与下层对应的candidates[i+1]相等,那就i++;因为如下图所示,排序后的数组连续的两个1连一起会造成数组的重复。但是有个点:最开始我看没有重复元素,所以我没有设置start那一项,发现就没法去重了。和3,2,2是一个,所以我发现得到的结果要单调递增,这样才能去重。思路:但是我去重打逻辑和代码随想录里的不太一样,我加了下面这行代码。⚠️:这个for循环后半部分的剪枝,要求初始数组是递增的。但是上述代码是可以优化的,如下所示。
2025-03-20 20:10:33
423
原创 代码随想录算法训练营第22天|leetcode77.组合、leetcode216.组合2️⃣、leetcode17.电话号码的字母组合
图中每一个节点(图中为矩形),就代表本层的一个for循环,那么每一层的for循环从第二个数开始遍历的话,都没有意义,都是无效遍历。思路:首先确定函数的返回值和参数(一般是void,遇到回溯的时候考虑其他类型返回值)中从startIndex开始遍历的。因为本题每一个数字代表的是不同集合,也就是。思路:与上题类似,都是组合类问题。主要点就是递归与回溯。思路:注意这里for循环,可不像是在。除此之外还要考虑到特殊情况,比如。不足我们需要的元素个数。求不同集合之间的组合。求同一个集合中的组合。
2025-03-19 19:43:14
292
原创 代码随想录算法训练营第21天|leetcode669.修剪二叉搜索树、leetcode108.将有序数组转换为二叉搜索树、leetcode538.把二叉搜索树转换为累加树
思路2:迭代法,也就是首先找到第一个节点,因为二叉搜索树的根节点属于有序数组中的中间位置。然后找到第一个节点之后,就开始向左迭代和右迭代。左右迭代的时候,首先判断是不是空指针,如果不是的话判断其cur->left(right)与val的关系,然后向left的方向迭代。思路:其实没有那么复杂,我第一次做的时候,我就考虑到删除节点,然后重构二叉树。但是很复杂,甚至联想到了昨天的那道删除二叉树的那个题目。比如3的左孩子是2,右孩子是5.但是5如果没有迭代到,也别怕遍历不到,因为已经有指针指向了5的头节点的了。
2025-03-18 22:30:11
182
原创 代码随想录算法训练营第20天|leetcode235.二叉搜索树的最近公共祖先、leetcode701.二叉搜索树中的插入操作、leetcode450.删除二叉搜索树中的节点
设置快慢指针,快指针先走,并不断比较判断cur的值和val的值。如果cur大那就左移,反之右移。查找目标区间,遇到目标区间内的节点,直接返回。思路:这道题好繁琐啊,判断条件太多了。不用使用回溯,二叉搜索树。
2025-03-17 19:53:39
241
原创 代码随想录算法训练营第18天|leetcode530.二叉搜索树的最小绝对差、leetocode501.二叉搜索树中的众数、leetcode236.二叉树的最近公共祖先
思路1:既然是二叉搜索树,所以中序遍历的结果是单调递增的。所以索性转换成有序vector数组,然后再数组中寻找最小差值;首先考虑递归函数返回值和参数,其次考虑终止条件。如果遍历到null或者遍历到目标节点了,就。思路:这道题没有做出来...首先想的是从下向上遍历,所以考虑到。思路2:不用哈希表,这个时候就用。|(遇到if终止条件)FUNC2(深层递归)
2025-03-15 19:15:44
384
原创 代码随想录第17天|leetcode654.最大二叉树、leetcode617.合并二叉树、leetcode700.二叉搜索树中的搜索、leetcode98.验证二叉搜索树
思路1:层次遍历法。最开始想开一个vector,然后把结果存入的。返回node就可以返回他下面所有的孩子节点了。思路:这道题第一次写的时候,没有观察到。node其实相当于头节点。时间和空间复杂度较高。思路:这道题超级简单。
2025-03-15 14:46:18
292
原创 代码随想录第16天|leetcode513.找树左下角的值、leetcodee112.路径总和、leetocde106.从中序与后序遍历序列构造二叉树
思路2:递归法,首先设定一个阈值max_depth。注意首先遍历root->left,所以首先到达左下。:使用了全局变量,coding的时候就在想如何判断true之后,后面就算遍历到false的话,也要是true。思路2:也就是让代码更加简洁,原代码要判断res与targetsum的大小,所以我们可以减少一个变量的引入,即。思路与上面的题类似,不再赘述~上面的不会,下面的就ac了哈哈哈😂。(如何打日志有时候也是个技术活),不要脑动模拟,回溯&&递归不分家,有回溯就有递归。要遍历整个树,找到所有路径,
2025-03-14 15:46:37
456
原创 代码随想录第15天|leetcode222.完全二叉树的节点个数、leetcode110.平衡二叉树、leetcode257.二叉树的所有路径、leetcode404.左叶子之和
我第一次做的时候保存中间遍历的节点的时候,我没有建立字符串类型的栈,我定义的是个字符串,然后想着回溯的过程中对字符串进行加减操作,但是后来我慢慢的发现这个东西第一次循环之后好像无法传递结果....所以这里我看完答案之后,然后递归isBalanced函数求深度,最开始isBalanced没有递归,只是单纯的求了左右子树的高度,⚠️:传值的时候记得传引用,因为不传引用的话,相当于传副本。,即本层递归中,path + 该节点数值,但该层递归结束,上一层path的数值并不会受到任何影响,所以类似于栈。
2025-03-13 13:02:03
434
原创 代码随想录第14天|leetcode226.翻转二叉树、leetcode101.对称二叉树、leetcode.104.二叉树的最大深度、leetcode111.二叉树的最小深度
每个节点遍历之后,交换其左右孩子节点,随后将其左右孩子节点入栈。(这个不用遍历每一层,是因为这个不像是层次遍历,这个任何一个节点的左右孩子都要交换)思路1:我的思路类似于层次遍历,然后空节点依旧入队列。然后遍历的时候检查节点是否为空节点,vec就push(101),反之就push本来的数值。首先left->left,right->right(外侧),再left->right,right->left(内侧)思路3:迭代法,思路与上面类似,但是与层次遍历不太相同。2.思路2:递归法,下面用的是后序遍历(
2025-03-12 18:42:55
384
原创 代码随想录算法训练营第13天|leetcode144.二叉树的前序遍历、leetcode94.二叉树的中序遍历、leetcode145.二叉树的后序遍历、二叉树的层次遍历
思路1:递归遍历思路2:迭代遍历但是右节点先入栈,左节点后入栈。因为左边这样就可以先弹出来。思路1:递归遍历思路2:迭代遍历这里结合栈去理解,思路1:递归遍历思路2:迭代遍历前序遍历顺序:中左右。后序遍历的顺序:左右中。所以借鉴前序遍历的代码,遍历顺序:中右左。然后再把结果数组,就得到了。
2025-03-10 21:33:59
437
原创 KMP之leetcode28.找出字符串中第一个匹配项都下标、leetcode.459重复的子字符串&&字符串总结&&双指针总结 2025.3.9
库函数如果库函数仅仅是 解题过程中的一小部分,并且你已经很清楚这个库函数的内部实现原理的话,可以考虑使用库函数。双指针344. 反转字符串 - 力扣(LeetCode)27. 移除元素 - 力扣(LeetCode)双指针法在数组,链表和字符串中很常用。其实很多数组填充类的问题,都可以先预先给数组扩容带填充后的大小,然后在从后向前进行操作。反转系列 诶。。。蛮考验技巧的541. 反转字符串 II - 力扣(LeetCode)151. 反转字符串中的单词 - 力扣(LeetCode)
2025-03-09 20:48:57
854
原创 代码随想录算法训练营第11天|leetcode150.逆波兰表达式求值、leetcode239. 滑动窗口最大值、leetcode347. 前 K 个高频元素
1.这道题难度不大,但是对于而言有些细节地方没有处理好...我第一次写的时候,下面判断那里,用的switch-case,频频报错...后来我发现,第二呢,就是字符串转换成整数那里等函数不清楚。第三点其实很基础...""表示字符串,‘’表示字符但是这道题是有移除风险的,所以stack最好是2.这道题算是二刷,去年用优先队列做的,但我现在已经不知道我当时咋做的了😭。但是我认为优先队列可能更好理解思路如下:1、3、-11、3、-1、-3、5、3、6、71、3、-1、-3、5、3、6、7。
2025-03-08 22:18:28
799
原创 代码随想录算法训练营第十天|leetcode232.用栈实现队列、leetcode225.用队列实现栈、leetcode20.有效的括号、leetcode1047.删除字符串中的所有相邻重复项
和栈相关的题都不算太绕。第一眼看的时候想用string来解决这个题,就是遍历,然后判断str[n]和str[n-1]的关系。其中从下面代码可以看到peek()的实现,直接用了pop()的操作,要不然判空的操作要再写一遍。在项目比较大的时候,由于参数多,全局变量等等,使用递归很容易判断不充分return的条件,非常容易无限递归(或者递归层级过深),,也就是说:首先用i去遍历整个字符串,一直入栈,如果top()元素与当前字符相同,那就弹出栈。,另外注意,如果栈是空的,stack.top()没意义。
2025-03-07 21:37:03
312
原创 代码随想录算法训练营第九天|leetcode151.反转字符串中的单词、右旋字符串
为了优化这个问题,我们可以将移除多余空格这个函数,用双指针来优化。如下所示,slow是慢指针,i就是快指针。这个过程就是:快指针向前走,指到单词的时候,就把原字符串里的内容。思路1:这道题如果另外开辟一个数组的话,就没意思了,还是要在一个数组里做事情。所以我们不妨先整体反转,再局部反转。这道题是反转单词,比昨天单纯的反转字符串有一点难度。类似,只不过那个是移除元素,这个是移除空格。思路2:那么如果先局部反转后整体反转呢。,然后这个双指针去掉空格的思路,与。思路一:O(n^2)
2025-03-06 22:55:41
344
原创 代码随想录算法训练营第八天|leetcode344.反转字符串、leetcode541.反转字符串2️⃣、替换数字 与STL之string
然后一个指针指向原来数组存储末尾,即presize-1。另一个指针指向新存储空间末尾。string 与c-string的区别:string字符串没有‘\0’结尾,但是后者类型为 const char *,以“\0”结尾。2.从第一个不相同的字符进行比较,如果被比较的字符值较小,或者其他字符都匹配,比较字符串的个数较多,则返回-1。1.从第一个不相同的字符进行比较,如果被比较的字符值较大,或者其他字符都匹配,比较字符串的个数较少,则返回1。因为要找的也就是每2 * k 区间的起点,这样写,程序会高效很多。
2025-03-05 20:47:56
367
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人