自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营第五十五天|并查集理论基础,107.寻找存在的路线

并查集里寻根的过程 --- 所以father数组初始化的时候需要father[i] = i。判断u and v是否找到同一个根 --- 说明他们在同一个集合中(同属于同一个根)所以我们需要改变树的构造: 把除了根节点 其他所有节点都挂在根节点下,这样寻根的时候很快,只需要一步。对于问题1,将ABC放在同一个集合中,就是将这三个元素连通在一起,如何连通呢?对于第二个问题,我们一路找到了C,通过B和A都指向C,说明A和B在同一集合中。

2026-01-01 04:19:47 120

原创 代码随想录算法训练营第五十三天|110.字符串接龙,105.有向图的完全可达性,106.岛屿的周长

solution2: 计算出总的岛屿数量:result = number of islands *4 - cover *2 #cover是相邻岛屿数量。1. 如何连接:在搜索过程中,可以枚举,用26个字母替换当前字符串的每一个字符,在看替换后 是否在strList里出现过,就可以判断 两个字符串 是否有是连接的。无权图 - BFS最合适,只要搜到了终点就一定是最短 - 因为BFS就是以起点为中心向四周扩散的搜索。无权图 - 找最短路径 不需要用Dijkstra算法-可以用广搜/深搜。

2025-12-31 02:09:07 102

原创 代码随想录算法训练营第五十二天|101.孤岛的总面积,102.沉没孤岛,103.水流问题,104.建造最大岛屿

grid[x][y] = 0 #把当前这个陆地1改成0(水/已访问过)思路:要求找不靠边的陆地面积,只需要把从周边找到陆地,通过dfs/ bfs将周边靠陆地且相邻的陆地变成海洋,再去遍历地图即可。dfs(visited, x, y, mark): --- mark是陆地的编号。#变成了count记录是否访问过,grid[x][y]就代表访问过或者是海洋。好难啊,逆向思维,从低处往高处搜索 -- 做了注释,每次把海洋变成陆地的时候,都统计一次陆地的大小。

2025-12-30 12:59:40 281

原创 代码随想录算法训练营第五十一天|99.岛屿数量 深搜,99.岛屿数量 广搜,100.岛屿的最大面积

思路:遇到一个没有遍历过的节点陆地,计数器就加一,然后把该节点陆地所能遍历到的陆地都标记上。在遇到标记过的陆地节点和海洋节点的时候直接跳过。1. 写法1的终止条件是 #满足什么不进行递归,一般无限死循环是因为节点在被重复访问。方法:1. DFS, 2.BFS,3.并查集。解题思路都是一样的,如何用广搜搜索所有陆地呢。,而不是从队列拿出来的时候再去标记走过。难点在于如何把area融合到代码中。99.岛屿数量 深搜(模版题)100. 最大岛屿面积。99.岛屿数量 广搜。

2025-12-19 01:54:49 68

原创 代码随想录算法训练营第五十天|图论理论基础,深搜理论基础,98. 所有可达路径,广搜理论基础

例如:通信网络(拓扑排序、最短路算法),社交网络(深搜、广搜),路径优化(最短路算法),任务调度(拓扑排序),生物信息学(基因为节点,基因关系为边),游戏开发(A * 算法等)等等。深搜三部曲:1.确定函数 & 参数,2.确定终止条件,3. for(选择本节点连接的节点) - 处理节点 - dfs(图,选择的节点) - 回溯,撤销处理结果。定义全局变量(四个方向的遍历那个)dir = [[0, 1], [1, 0], [-1,0], [0,-1]]中,任何两个节点是可以相互到达的,我们称之为 强连通图)

2025-12-17 05:30:49 333

原创 代码随想录算法训练营第四十九天|42.接雨水,84.柱状图中最大的矩形

面试高频题,我看到topics有三种解法:1.双指针,2.单调栈,3.dynamic programming。既可以按行(monotonic stack)也可以按列(two pointers)的方法计算雨水量。单调栈:从栈顶到栈底:从大到小(每插入一个新的小数值时,都要弹出先前的大数值)栈顶,栈顶的下一个元素,即将入栈的元素:这三个元素组成了最大面积的高度和宽度。关键的三个元素:mid,右边第一个小于mid,左边第一个小于mid。找每个柱子左右侧的第一个高度值小于该柱子的柱子。单调栈有点难想,似懂非懂。

2025-12-16 13:43:45 170

原创 代码随想录算法训练营第四十八天|739. 每日温度,496.下一个更大元素 I,503.下一个更大元素II

从头到尾过了一遍,感觉有点理解了,但却是不熟悉,while条件也很有趣:while len(stack) > 0 and temperatures[i] > temperatures[stack[-1]]:可以运行,但是while temperatures[i] > temperatures[stack[-1]] and len(stack) > 0:却不可以运行,所以and也不能完全等价。单调栈:空间换时间,遍历的过程中需要用一个栈来记录右边第一个比当前元素高的元素(1. 取模的过程模拟成环的遍历。

2025-12-16 04:26:10 378

原创 代码随想录算法训练营第四十六天| 647. 回文子串,516.最长回文子序列,动态规划总结

在left and right element same的情况下,只要中间的字符串是回文string,向两边拓展的就是回文字串。dp[i][j]表示s[i:j]中longest palindromic subsequence的最长长度。其实carl用的extend function就是把这两种情况给用function表达了出来。有三种情况:1. i==j, 2. j-i = 1, 3. j-i > 1。dp[i][j]: [i, j]这个子串是否是回文子串substring。对着这套逻辑居然写出来了。

2025-12-11 13:22:22 200

原创 代码随想录算法训练营第四十五天| 115.不同的子序列,583. 两个字符串的删除操作,72. 编辑距离,编辑距离总结篇

if s[i-1] = t[j-1]: dp[i][j] = dp[i-1][j-1] + dp[i-1][j] #前面都匹配上了,所以使用dp[i-1][j-1],我们不适用这个t[j-1]使用之前满足条件的。dp[i][j]: word1到i,word2到j,为了一样,需要删除的number of steps。删除dp[i-1][j]+1,也可以删除dp[i][j-1]+1。dp[i][j]:以i-1为尾的s中有以j-1为尾的t的数量。替换:dp[i][j] = dp[i-1][j-1] + 1。

2025-12-11 09:58:11 186

原创 代码随想录算法训练营第四十四天|1143.最长公共子序列, 1035.不相交的线, 53. 最大子序和,392.判断子序列

if text1[i-1] == text2[j-1]: #这里原本写错了,写成了text1[i] == text2[j],没想到text的长度可没变。理解:如果dp[i-1]是负数的话,只会拖累dp[i],所以要从头开始计算,dp[i]的含义也是一定要包括nums[i]或者说一定以nums[i]结尾的连续子序列的和。dp[i][j]意思很明确,nums1到i-th number, and nums2到j-th number,有dp[i][j] uncrossed lines。之前用贪心做过,现在用dp。

2025-12-09 12:26:48 285

原创 代码随想录算法训练营第四十三天| 300.最长递增子序列,674. 最长连续递增序列, 718. 最长重复子数组

应该是nums1走到i的位置,nums2走到j位置,dp[i][j]表示maximum length of a subarray。initialization: dp[i][j] = 0,但是对于有出现nums1[i]=nums2[0]或者nums1[0]=nums2[j]的初始化应该为1(nums1)我之前只想到了dp[i]和dp[i-1],dp[i-2]的对比,却没想到可以用j来遍历小于i的每一个字母。思考过程:dp[i]表示直到第i个number,dp[i]:最长递增子序列的长度。

2025-12-08 05:20:41 264

原创 代码随想录算法训练营第四十二天| 188.买卖股票的最佳时机IV,309.最佳买卖股票时机含冷冻期, 714.买卖股票的最佳时机含手续费

我写的:dp[i][0] = max(dp[i-1][0], dp[i-1][3] - prices[i], dp[i-1][1] - prices[i])和dp[i][0] = max(dp[i-1][0], max(dp[i-1][3], dp[i-1][1]) - prices[i])结果一样,但感觉思路有点不一样。dp[i][0] = max(dp[i-1][0], dp[i-1][1] -prices[i], dp[i-1][3] - prices[i]) #持有股票状态 - 买入股票。

2025-12-05 06:47:49 265

原创 代码随想录算法训练营第四十一天| 121. 买卖股票的最佳时机,122.买卖股票的最佳时机II, 123.买卖股票的最佳时机III

有个地方写错了:dp[i][1] = max(- prices[i], dp[i-1][1]) #之前写成了dp[i][1] = max(dp[i-1][0]- prices[i], dp[i-1][1]),要知道只能买入一次股票,我写的反而是可以买卖多次股票的解法。dp[i][1] = max(dp[i-1][1], dp[i-1][0] - prices[i])#第i天持有股票的profit。dp[i][0] #第i天持有股票的profit。所以dp[0][3] = -prices[0]

2025-12-04 12:29:54 121

原创 代码随想录算法训练营第三十九天|198.打家劫舍,213.打家劫舍II,337.打家劫舍III

dp = [[0,0] for _ in range(n)] #创建二维动态规划数组,dp[i][0]表示不抢劫第i个房屋的最大金额,dp[i][1]表示抢劫第i个房屋的最大金额。dp[0], dp[1] = nums[0], max(nums[0],nums[1]) #我原本写成了dp[0], dp[1] = nums[0], nums[1]我写的递推是:dp[i] = max(dp[i-1], dp[i-2]+nums[i])如果不偷第i间房,那么dp[i] = dp[i-1]树形dp的基础入门题目。

2025-12-04 04:58:02 317

原创 代码随想录算法训练营第三十八天|322. 零钱兑换,279.完全平方数,139.单词拆分,多重背包,背包问题总结

if [j, i]存在于字符串dp中,同时dp[j] = true,则dp[i] = true(j<i)#就是前面是true,中间在子串中,整体是true。为什么用dp[j] = min(dp[j-i]+1, dp[j]) instead of dp[j] = dp[j-i] + 1,没说硬币按顺序呀。dp[i]是为了达到amount=i的最小硬币数量,所以initialization需要把dp[i] = float('inf')无穷大。如果求排列数就是外层for遍历背包,内层for循环遍历物品。

2025-12-04 03:02:50 194

原创 代码随想录算法训练营第三十七天|完全背包,518. 零钱兑换 II,377. 组合总和 Ⅳ,70. 爬楼梯 (进阶)

跟着修修改改倒是写出来了,第一眼奇怪,amount=0,coins = [7]时,算是有一种方法可以解答(什么都不拿),但是amount = 3,coins[2]时却没有答案。[j - weight[i]] + vlaue[i]) (Recall:01背包:dp[i][j] = max(dp[i-1][j],dp[i][j] #表示使用[0, i]的coins凑成了amount = j的组合数量有dp[i][j]种方法。和01背包的不同之处:dp[i][j] = max(dp[i-1][j],

2025-11-30 11:50:48 138

原创 代码随想录算法训练营第三十六天|1049. 最后一块石头的重量 II,494. 目标和,474.一和零

dp[i][j] = max(dp[i-1][j], dp[i-1][j-stones[i]] + stones[i]) #容量为j时,填充物品i的价值。去掉[i]之后,递推公式变成dp[j] = dp[j] + dp[j-nums[i]] 等价于 dp[j] += dp[j-nums[i]]画图出来,dp[i][j] from dp[i-1][j]和左上角的dp[i-1][j-nums[i]],所以初始化最左边和最上边的一行。dp[j] # targetsum=j时,达到的sum,所以dp[j]<=j。

2025-11-29 03:58:37 288

原创 代码随想录算法训练营第三十五天|背包问题 二维、一维,416. 分割等和子集

是否放入物品i表达式:dp[i][j] = max(dp[i-1][j], dp[i-1][j - weight[i] + value[i])递推公式:dp[j] = max(dp[j], dp[j-weight[i]] + value[i]) #不放物品i的价值,与加入物品i的价值。01背包问题举例:有n种物品,每种物品只有一个,每种物品都有自己的重量和价值,有一个最多只能放重量为m的物品,这个背包能装的最多价值是多少?01背包*,完全背包*,多重背包,分组背包,混合背包。为什么一维数组必须倒叙遍历?

2025-11-28 12:58:40 337

原创 代码随想录算法训练营第三十四天|62.不同路径,63. 不同路径 II,343.整数拆分

1.考虑拆成2个数的情况 j*(i-j),2.考虑拆成3个数的情况j*dp[i-j] 3. 拆成3个数以上: dp[j] * dp[i-j]dp[i][j] = dp[i-1][j] + dp[i][j-1] #但是要保证obstacle[i][j]!dp[i][j]是走到[i, j]的数量和,只能从dp[i-1][j]和dp[i][j-11]两个位置走到。所以,递推公式: dp[i][j] = dp[i-1][j] + dp[i][j-1]定义dp[i]: 对i进行拆分,得到最大的乘积为dp[i]

2025-11-26 07:52:36 243

原创 代码随想录算法训练营第三十二天|509. 斐波那契数,70. 爬楼梯,746. 使用最小花费爬楼梯

递推公式 dp[i] = min(dp[i-1] + cost[i], dp[i-2]+cost[i])2.递推公式已经告诉了我们: dp[i] = dp[i-1]+dp[i-2]初始化:dp[0] = cost[0], dp[1] = cost[1]递推公式dp(i) = dp(i-1) + dp(i-2)已经告诉我们dp[0] = 0, dp[1] = 1。动态规划:dp(4) = dp(3) + dp(2)初始化:dp(1) = 1, dp(2) = 2。打印 min(dp[-1], dp[-2])

2025-11-24 04:50:43 156

原创 代码随想录算法训练营第三十一天|56. 合并区间, 738.单调递增的数字

比如如何写List[List[int]], 其实就是:result.append([cur_l, cur_r])当时在想如果出现[1, 3][2, 4][3, 5]如何合并,比如删掉前一个【】啥的。1. 找到第一个位数开始最后一个满足的//从最后开始第一个不满足的:n[2] = 3。3. 如果你和前面相等,你也变成9,前面一个-1(while循环)看到Carl说思路好想,让我来写一下我的思路。思路没啥问题,代码还是出错了,让gpt改正的。从后往前遍历,一趟搞定,更简单。如果你和前面不相等,自己-1。

2025-11-23 15:03:37 180

原创 代码随想录算法训练营第三十天|452. 用最少数量的箭引爆气球,435. 无重叠区间,763.划分字母区间

只要右边界>左边界 = 重叠。有了上一题的经验,代码一次过。1. 统计每个字符的最远位置。两个右边界的minimum。

2025-11-22 14:51:03 197

原创 代码随想录算法训练营第二十九天|134.加油站,135.分发糖果,860.柠檬水找零,406.根据身高重建队列

我一开始想用字典,但对字典的正确代码形式写不熟,经过gpt发现list也可以写出来。出现环形的模拟:index = (index +1) % len(cost)一旦全程的最低油量minFuel出现了>=0的情况,说明这个点可以成为起始点。想处理好一边再处理另一边,不要两边想着一起兼顾,后面还会有题目用到这个思路。只要遇到两个维度都要考虑,就需要每个维度单独考虑,再结合写答案。for循环适合从头到尾的遍历,while适合模拟环形遍历。1. 左边孩子比右边孩子大。2. 右边孩子比左边大。

2025-11-22 02:41:45 114

原创 代码随想录算法训练营第二十八天|122.买卖股票的最佳时机II,55. 跳跃游戏,45.跳跃游戏II,1005.K次取反后最大化的数组和

写的感觉像是two pointers, 写的时候感觉只有单调递增部分需要计算profit。第一天没有利润,至少要第二天才会有利润。走到能覆盖的最远才计算step+=1。跳跃覆盖范围是否可以覆盖到终点。局部最优:收集每天的正利润。carl方法:只收获正数。全局最优:求得最大利润。用计算语言表示有点难。

2025-11-21 13:40:54 170

原创 代码随想录算法训练营第二十七天|贪心算法基础,455.分发饼干,376. 摆动序列,53. 最大子序和

但如果出现负数,和result比较,如果>result,记录这一段的sum;如果令result减小,则重新开始数。贪心算法:没有规律,找每个阶段局部最优解 --> induce 全局最优。感觉像是是否是凸性问题,是就用贪心?接触动态规划DP后,对比贪心&DP。2. 平坡出现在数组首尾两端。先用大饼干喂大胃口的小孩。3. 单调坡度出现平坡。1. 上下坡中有平坡。如果出现正数肯定是+

2025-11-18 23:41:47 122

原创 代码随想录算法训练营第二十五天|491.递增子序列,46.全排列,47.全排列 II

if i > 0 and nums[i] == nums[i-1] and not used[i-1]: #第一次写的时候,没写not used[i-1]这个意思是之前用过used[i-1]走recursion。这里的要求是nums[i] >= path[-1]所以如果path存在且nums[i] < path[-1],则continue跳过这个数。还有332.重新安排行程(建议跳过,力扣修改后台数据,应该不能用回溯了),51.N皇后(适当跳过),37.解数独(适当跳过)没写。树枝上不去重,树层去重。

2025-11-18 13:02:16 414

原创 代码随想录算法训练营第二十四天|93.复原IP地址,78.子集,90.子集II

在 for i in range(...) 里,下一次就是下一个 i(等同于“到 i+1 去”)。startIndex一定是需要的,因为不能重复分割,记录下一层递归分割的起始位置。我没有记录都好的数量,但是用了len(path)=4。和昨天写的一道题差不多--一次过,但复习了昨天的代码。在 for x in iterable 里,是取。子集问题,就是收集树形结构中,每一个节点的结果。当前这层循环(不再有下一次迭代),程序继续从。在 while 里,是回到。先收集结果再到叶子结点。循环剩余代码,立刻进入。

2025-11-15 07:11:37 265

原创 代码随想录算法训练营第八天 | 151.翻转字符串里的单词,卡码网:55.右旋转字符串,28. 实现 strStr(),459.重复的子字符串

思想:当字符串出现不匹配时,可以记录一部分之前已经匹配的文本内容,利用这些信息避免从头再去做匹配。next数组:一个前缀表prefix table(表示前缀表) - 遇到冲突位置要向前回退。最长相等前后缀 aaba: 1, aabaa: 2, aabaaf: 0。28. 实现 strStr()151.翻转字符串里的单词。卡码网:55.右旋转字符串。步骤--得到next数组。459.重复的子字符串。KMP算法要来了-解决。反而KMP不太理解。

2025-11-14 22:00:40 754

原创 代码随想录算法训练营第二十三天|39. 组合总和,40.组合总和II,131.分割回文串

如果candidates[i] == candidate[i-1] 并且used[i-1]==false,就说明:前一个树枝使用了candidates[i-1],也就是说明同一树层使用过candidates[i-1]if i> startIndex and candidates[i] == candidates[i-1] and not used[i-1]: #说明used[i-1] = false。自己写的问题:去重,因为[10,1,2,7,6,1,5]这里有两个1所以有重复结果。第二类问题,切割问题。

2025-11-14 06:49:48 449

原创 代码随想录算法训练营第二十二天| 77. 组合,216.组合总和III,17.电话号码的字母组合

recusion走len(digits)遍,backtracking走len(digit_to_letters[digits[pos]])遍。我之前写成了先return None,再res-=i, path.pop(),显然错误。定义两个全局变量,一个用来存放符合条件的单一结果,另一个用来存放符合条件结果的集合。-len(path)=2, result.append(path)回溯搜索法:纯暴力brute force search (能写出来的暴力搜索)path.pop() #回溯操作。

2025-11-13 11:46:17 371

原创 代码随想录算法训练营二十一天|669. 修剪二叉搜索树,108.将有序数组转换为二叉搜索树, 538.把二叉搜索树转换为累加树

修建的操作并不是在终止条件上进行的,所以遇到null返回。1.将root移动到[L, R]范围内,注意是左闭右闭。如果root>high,应该递归左子树。思路:节点0的有孩子返回给上一层。

2025-11-13 04:20:15 106

原创 代码随想录算法训练营第二十天|235. 二叉搜索树的最近公共祖先,701.二叉搜索树中的插入操作,450.删除二叉搜索树中的节点

完全用236的代码是可以写出来的。如果当前节点>p&q,说明common ancestor一定在左边。Recall:236. 二叉树的最近公共祖先。1. 没找到要删除的node。想法OK,确实不会写代码啊。3. 左不空,右为空。4. 左为空,右不空。5. 左不空,右不空。

2025-11-12 14:52:09 212

原创 代码随想录算法训练营第十七天| 530.二叉搜索树的最小绝对差,501.二叉搜索树中的众数,236. 二叉树的最近公共祖先

现在对return None的理解是,什么都不return,我需要的variables已经在执行过程中被更新了。转换为list再对比的步骤,可以一次性写出来,time complexity = O(N)难点1. 如何从下往上遍历?--回溯(postorder is a kind of 回溯)第一想法是hashtable,果然很久没写就要忘了hashtable的套路了。遇到空的话,因为tree都是None,所以return None。

2025-11-12 06:32:35 121

原创 代码随想录算法训练营第十六天|654.最大二叉树,617.合并二叉树, 700.二叉搜索树中的搜索,98.验证二叉搜索树

1.找到数组中的maximum value and corresponding index,to construct the root node。root value > 所有左子树节点,root value < 所有右子树节点。是否写if node.left取决于终止条件是否需要len(nums) ==1。preorder, inorder, postorder得到的答案一样。3.最大值所在的下表右区间 -- 右子树。prefix:前缀,suffix:后缀。递归比较好理解,虽然自己写不出来。

2025-11-11 15:56:36 187

原创 代码随想录算法训练营第十四天 | 110.平衡二叉树,257.二叉树的所有路径,404.左叶子之和,222.完全二叉树的节点个数

今天比较混过去的,因为想快点补齐进度,之后复习的时候把summary补上吧。

2025-11-07 15:16:34 93

原创 代码随想录算法训练营第十五天|513.找二叉树左下角的值,112. 路径总和,113. 路径总和ii,106.从中序与后序遍历序列构造二叉树,105.从前序与中序遍历序列构造二叉树

向左递归:if node.left: count -= node.left.val traversal(node.left, count)确定parameters and return of the traversal function。遍历一条合理的路径 --> return True --》回溯。理解了回溯,但感觉这个递归很晕。得到左方向找到路径,需要回溯。对着106代码很容易写出来。

2025-11-07 15:13:56 129

原创 代码随想录算法训练营第十三天 | 226.翻转二叉树,101.对称二叉树,104.二叉树的最大深度,111.二叉树的最小深度

post traversal - easy, 还未看pre traversal。什么是深度,什么是高度,如何求深度,如何求高度,这里有关系到二叉树的遍历方式。2.二叉树的属性 - corresponding 101, 104,111。这里的end condition需要按顺序--先排除可能出现None的情况。再在left.val == right.val的情况下,继续比较。只能说比刚开始练习二叉树的手感好了,但还是没思路。迭代-可能因为前面连续写了几道迭代,倒是想到了。遍历-一下子没想到,需复习。

2025-11-06 16:43:53 396

原创 代码随想录算法训练营第十二天 | 二叉树理论基础,递归遍历,迭代遍历,统一迭代,层序遍历

那么就在recursion function中加入这个参数,并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。-深度优先搜索DFS:前中后序遍历 - 一般是递归(使用stack),迭代法(非递归法)- 满二叉树Full Binary Tree: # of nodes = 2^k -1。- 线式存储 Linear:左孩子:i*2+1, 右孩子:i*2+2。递归遍历Recursion--对应题目 144 145 94。-广度优先搜索:层序遍历(=迭代法)(使用queue队列)确定三要素--》正确。

2025-11-06 08:48:56 495

原创 代码随想录算法训练营第九天 | 232.用栈实现队列,225. 用队列实现栈,20.有效的括号,1047.删除字符串中的所有相邻重复项

item: #说明不是左括号,是右括号,但是刚进入的右括号不等于我们遍历的,所以return False。今日总结:最近遇到了不熟悉的data structure,所以不太会写代码,思路能理解,也挺累的,希望周末慢慢复习,也多做几道structure基础题巩固。利用栈的数据结构(last in first out),一样就消除,不一样就保留。熟悉stack and queue结构的好题,虽然还是不熟。不熟悉queue and stack的基础操作。2.结合dictionary。

2025-11-01 10:26:21 500

原创 代码随想录算法训练营第七天 | 344.反转字符串,541.反转字符串II, 卡码网 54.替换数字

1. s.reverse() 或者reversed(s),但必须写成s[:] = reversed(s)才会运行成功,reversed(s)只返回一个反向迭代器,并不修改列表本身。return ' '.join(sorted(inter, key=key)) #其实我还是有点懵,再把卡哥的理解下。oa也做得人累死,加油,坚持到春天,好消息会来的。2.在old_index中找数字,找到就在new-index中替换为number。return "".join(a) #又把list变成string了。

2025-10-31 15:16:11 743

空空如也

空空如也

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

TA关注的人

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