获得徽章 0
#刷题交流# 字符修复问题
理解问题:
我们需要找到字符串 str1 中由相同字符组成的最长连续子串的最大长度。
可以通过最多 m 次修复操作来修改字符串中的某些字符。
str2 表示哪些位置的字符可以被修改。
数据结构选择:
使用滑动窗口来动态维护一个子串,窗口内的字符可以是相同的。
使用两个指针 left 和 right 来表示窗口的左右边界。
算法步骤:
初始化两个指针 left 和 right 都指向字符串的起始位置。
遍历字符串,尝试扩展右边界 right,同时记录当前窗口内字符的频率和可以修复的字符数量。
如果修复次数超过 m,则收缩左边界 left,直到修复次数不超过 m。
在每次扩展右边界时,更新最长连续子串的长度。
关键点:
需要记录当前窗口内每个字符的频率。
需要记录当前窗口内可以修复的字符数量。
当修复次数超过 m 时,需要移动左边界来减少修复次数。
展开
评论
#刷题交流# 全为1的序列总数


初始化变量:

count:用于记录当前连续 '1' 的长度。
result:用于记录所有连续 '1' 子序列的数量。

遍历字符串:

如果当前字符是 '1',则增加 count。
如果当前字符是 '0',则将 count 重置为 0。
每次遇到 '1' 时,将 count 加到 result 中。

取模运算:

在每次更新 result 时,对 10^9 + 7 取模。
展开
评论
#刷题交流# 桥梁最高高度
计算高度差:计算 a 和 b 之间的高度差 diff = abs(a - b)。
判断可行性:如果 diff 大于 n - 1,则不可能在 n 根桥柱的情况下从 a 变化到 b,返回 -1。
计算最大高度:如果可行,计算在满足条件的情况下,最高的桥柱高度。最高的桥柱高度可以通过以下方式计算:

如果 a 和 b 之间的变化是逐步增加或减少的,那么最高的桥柱高度可能是 max(a, b) + (n - 1 - diff) // 2。
展开
评论
#刷题交流# 珠子颜色去重
初始化:创建一个空集合用于记录已经出现过的颜色,创建一个空列表用于存储最终结果。
遍历列表:从后向前遍历输入的列表。
去重处理:对于每个颜色编号,检查它是否已经在集合中。如果不在,则将其添加到集合和结果列表中。
反转结果:由于我们是反向遍历的,最终的结果列表需要反转以恢复原来的顺序。
展开
评论
#刷题交流# 农田怪该最大化作物产量问题
初始化:创建两个列表,分别存储每一行的总产量和每一列的总产量。
遍历计算:
遍历每一行,计算该行的总产量并存储。
遍历每一列,计算该列的总产量并存储。
选择最优行和列:
找到总产量最大的行和列。
计算最终产量:
遍历整个农田,计算总产量,注意处理被选中的行和列的交叉点。
展开
评论
#刷题交流# 字符串最短循环子串
遍历可能的子串长度:从1到字符串长度的一半,尝试每一个可能的子串长度。
生成子串:对于每一个可能的子串长度,生成对应的子串。
拼接子串:将生成的子串拼接成与原字符串相同长度的字符串。
比较拼接后的字符串与原字符串:如果拼接后的字符串与原字符串相同,则找到了最短的子串。
返回结果:如果找到符合条件的子串,返回该子串;否则返回空字符串。
展开
评论
#刷题交流# 最大未出现自然数问题
排序集合:将集合中的数字从小到大排序。
初始化变量:初始化一个变量 max_missing 来记录最大的未出现的自然数。
遍历自然数:从最小的自然数(0)开始遍历,检查每个自然数是否在集合中出现。
**更新 max_missing**:如果某个自然数未出现,更新 max_missing。
替换操作:考虑通过替换操作来最大化 max_missing。
展开
评论
#刷题交流# 多零件流水线优化问题


初始化:

初始化三个时间线(小C、小U、小R)为0。
初始化一个优先级队列,按照零件的优先级排序。

处理零件:

从优先级队列中取出最高优先级的零件。
根据零件的工序耗时,依次更新小C、小U、小R的时间线。
如果某个工人在等待,直接开始下一个零件的加工。

计算总时间:

所有零件加工完成后,取三个时间线中的最大值作为总时间。
展开
评论
#刷题交流# 视频推荐算法


理解问题:

我们需要计算给定数据中的80百分位数。
80百分位数是指在排序后的数据中,第80%位置的数值。
如果数据总数为N,那么80百分位数的位置是 N * 0.8,如果结果有小数,需要四舍五入。

数据结构的选择:

我们可以使用列表(list)来存储数据,因为列表可以方便地进行排序和索引操作。

算法步骤:

将输入的字符串转换为整数列表。
对列表进行排序。
计算80百分位数的位置。
根据计算出的位置,获取该位置的数值。

具体实现:

将输入的字符串按逗号分割,并将每个元素转换为整数。
使用Python的内置排序函数对列表进行排序。
计算80百分位数的位置,并使用四舍五入函数获取整数位置。
返回该位置的数值。
展开
评论
#刷题交流# 最大数组和
计算原始数组的最大子数组和:
使用 Kadane 算法计算原始数组的最大子数组和。
计算翻转后的最大子数组和:
对于每个可能的翻转子数组,计算翻转后的数组,并使用 Kadane 算法计算其最大子数组和。
选择最大值:
比较原始数组的最大子数组和与所有翻转后的最大子数组和,选择其中的最大值作为最终答案。
展开
评论
#刷题交流# 叠盘子排序
初始化:
使用一个指针 i 来遍历数组。
使用一个列表 current_group 来存储当前正在构建的分组。
使用一个列表 result 来存储最终的分组结果。
遍历数组:
从第一个元素开始,检查当前元素是否与前一个元素连续。
如果连续,将其加入 current_group。
如果不连续,检查 current_group 的长度:
如果长度大于等于3,将其格式化为字符串并加入 result。
如果长度小于3,将 current_group 中的每个元素单独加入 result。
重置 current_group 并开始新的分组。
处理最后一个分组:
遍历结束后,检查 current_group 是否还有未处理的分组,并按照上述规则处理。
展开
评论
#刷题交流# 还原原始 字符串
枚举子串:
从 F 的第一个字符开始,枚举不同长度的子串。
对于每个子串,检查它是否可以通过题目描述的操作得到 F。
验证子串:
对于每个候选的子串 S,通过题目描述的操作生成字符串,并与 F 进行比较。
如果生成的字符串与 F 完全匹配,则说明这个子串是可能的初始字符串。
返回结果:
如果找到一个符合条件的子串,返回这个子串作为最短的初始字符串。
如果没有找到符合条件的子串,返回原字符串 F。
展开
评论
#刷题交流# 黑白块迷宫
初始化:将起点 (0, 0) 加入队列,初始经过的黑色格子数量为 grid[0][0]。
BFS遍历:

从队列中取出一个格子 (x, y) 及其经过的黑色格子数量 black_count。
如果当前格子是终点 (n-1, m-1),则返回 black_count。
否则,尝试向四个方向移动,如果新格子在边界内且未被访问过,则将其加入队列,并更新经过的黑色格子数量。

返回结果:如果队列为空且未找到终点,则返回一个表示无法到达终点的值(例如 -1)。
展开
评论
#刷题交流# 小G的平衡串
统计字符数量:遍历字符串,统计每个字符 a、b、c 的出现次数。
计算目标数量:设字符串长度为 n,则 a 的目标数量应为 n/2,b 和 c 的目标数量之和也应为 n/2。
计算差异:计算当前 a 的数量与目标数量的差异,以及 b 和 c 的数量与目标数量的差异。
计算最小操作次数:将 a 的数量调整到目标数量,b 和 c 的数量调整到目标数量之和。每次操作可以将一个字符修改为另一个字符,因此最小操作次数为差异的绝对值之和。
展开
评论
#刷题攻略# 获取排名第三的数
去重:将数组中的所有分数放入一个集合中,这样可以自动去除重复的分数。
排序:将集合中的分数按降序排序。
返回结果:如果排序后的列表长度大于等于3,返回第三大的分数;否则返回最大的分数。
展开
评论
#刷题交流# 最大关键数查找

从 N 开始向下遍历:因为我们找的是最大的关键数,所以从 N 开始向下遍历可以更快地找到结果。

检查每个数的每一位:对于每个数,将其转换为字符串,然后检查每一位数字是否能整除该数。

找到第一个满足条件的关键数:一旦找到一个满足条件的数,就返回该数
展开
评论
#刷题交流# 最优硬币组合问题
遍历每个金额 i 从 1 到 amount。
对于每个金额 i,遍历每种硬币 coin,如果 coin <= i,则更新 dp[i] 为 min(dp[i], dp[i - coin] + 1)。
最终,dp[amount] 就是凑出 amount 所需的最少硬币数量。
展开
评论
#刷题交流# 数组奇数检测:
遍历数组:从数组的第一个元素开始,逐个检查每个元素。
检查子数组:对于每个元素,检查它以及它后面的两个元素(如果存在)是否都是奇数。
返回结果:如果在遍历过程中发现了一个满足条件的子数组,立即返回 True。如果遍历完整个数组都没有找到这样的子数组,返回 False。
展开
评论
#刷题交流# 题目 字符串解压缩
1创建一个空字符串或列表来存储解压后的结果。
2遍历输入字符串:逐个字符地遍历输入字符串。
3处理字母和数字:
如果当前字符是字母,检查下一个字符是否是数字。
如果是数字,将字母重复该数字指定的次数,并添加到结果中。
如果不是数字,直接将字母添加到结果中。
4返回结果:将结果列表转换为字符串(如果使用列表存储),并返回。
展开
评论
#刷题交流# 中因子通常指在因子列表中位于中间的因子。因子列表长度为奇数,那么中因子就是中间的那个数;若为偶数,则中因子通常指中间的两个数
评论
下一页
个人成就
文章被点赞 1
文章被阅读 101
掘力值 11
收藏集
0
关注标签
0
加入于