掘友等级
获得徽章 3
#刷题交流# 【最少步数归零】理解问题:每个数字可以删除任意一位,直到变为0。需要计算所有数字变为0所需的最少步数。
数据结构选择:可以使用一个整数列表来存储每个数字的位数。
算法步骤:
遍历数组中的每个数字。
计算每个数字的位数。
将所有数字的位数相加,得到最少步数。
周六忘记刷题了,补签一下
#刷题交流# 【环状DNA最小展示】思路:由于环状结构可以从任意位置开始读取,因此一个长度为 n 的序列可以有 n 种不同的表示方式。需要从这些表示中找到字典序最小的序列。为了实现这一点,可以生成所有可能的表示方式,并将它们存储在一个集合中,然后从中找到字典序最小的序列
#刷题交流# 【构造回文】经典老题:检查特殊情况:首先检查是否存在可能的回文字符串 t 满足条件。如果 s 本身就是回文且所有字符相同,则无法构造满足条件的 t。
从中间向两边扩展:尝试从 s 的中间向两边扩展,找到一个字典序小于 s 的最大回文字符串。
修改字符:如果当前字符可以减小并且仍然满足回文条件,则进行修改。
确保回文:在修改字符后,确保 t 仍然是回文。
#刷题交流# 【游戏排名】解题步骤:去重:使用Python的集合(set)来去除重复元素。
排序:将去重后的集合转换为列表并进行排序。
判断并返回结果:根据排序后的列表长度,返回相应的分数。
#刷题交流# 【不同整数计数】:首先,需要遍历字符串 word,将所有非数字字符替换为空格。
提取整数:接下来,你需要从处理后的字符串中提取出所有的整数。注意,提取出的整数可能包含前导零,需要去除这些前导零。去重:使用集合(set)来存储不同的整数,因为集合会自动去重。返回结果:最后,返回集合的大小,即不同整数的数量。
#刷题交流# 【小D的abc】思路:记忆化递归:我们使用一个字典 memo 来存储已经计算过的结果,避免重复计算。
基本情况:如果 k 为 0,直接返回当前字符串。
字符变换:对当前字符串中的每个字符进行变换,生成新的字符串。
递归调用:递归调用 transform 函数,进行下一次变换。
结果存储:将结果存储在 memo 中,以便后续使用。
#刷题交流# 今天差点忘记刷题
【DNA序列】:初始化动态规划数组:创建一个二维数组 dp,其中 dp[i][j] 表示将 dna1 的前 i 个字符转换成 dna2 的前 j 个字符所需的最少编辑步骤。
边界条件:初始化 dp 数组的边界条件,即将 dna1 的前 i 个字符转换成空字符串,或者将空字符串转换成 dna2 的前 j 个字符。
填充动态规划数组:根据当前字符是否相同,选择不同的操作(插入、删除、替换)来更新 dp 数组。
返回结果:最终结果存储在 dp[len(dna1)][len(dna2)] 中。
#刷题交流# 【石子移动】解析思路:首先对石子位置进行排序。
如果石子已经连续排列(即最大位置与最小位置之差等于石子数量减一),则不需要任何移动。
否则,需要计算将石子移动到连续位置所需的最小次数。这可以通过双指针法来实现,即通过滑动窗口来找到一个最小的区间,使得该区间内的石子数量尽可能接近石子总数。
#刷题交流# 【比赛配对】解题过程:初始化计数器:用于记录总共进行的比赛次数。
循环处理每一轮:
如果当前队伍数为偶数,计算比赛次数并更新队伍数。
如果当前队伍数为奇数,计算比赛次数并更新队伍数。
终止条件:当队伍数为 1 时,结束循环。
下一页