刷题篇6| 豆包MarsCode AI刷题

84 阅读3分钟

大家下午好,今天是刷题篇的最后一章了。不过以后可能会不定时更新哈哈。那么我们来看下面这一道题目哈哈。

叠盘子问题

问题描述

小M有一个独特的方式来收拾家中的盘子。每次用餐后,他会将盘子按照他们的序号顺序叠放。盘子的序号都是唯一的整数,并且在收拾前就是递增的。小M的叠放规则是,每一堆盘子的序号都是连续递增的,并且至少包含3个盘子。需要编写程序帮助小M确定盘子的叠放方式。

例如,输入的盘子序号是 [-3, -2, -1, 2, 10, 15, 16, 18, 19, 20],按照小M的规则,连续递增序列 -3, -2, -1 可以叠在一起表示为 -3--1,而 18, 19, 20 可以叠在一起表示为 18-20。不满足连续递增至少3个的,如 2, 10, 15, 16 都应单独列出。 输入参数 plates: 一个整数数组,表示盘子的序号 n: 盘子总数 测试样例 样例1:

输入:plates = [-3, -2, -1, 2, 10, 15, 16, 18, 19, 20], n = 10 输出:"-3--1,2,10,15,16,18-20"

样例2:

输入:plates = [-6, -3, -2, -1, 0, 1, 3, 4, 5, 7, 8, 9, 10, 11, 14, 15, 17, 18, 19, 20], n = 20 输出:"-6,-3-1,3-5,7-11,14,15,17-20"

样例3:

输入:plates = [1, 2, 7, 8, 9, 10, 11, 19], n = 8 输出:"1,2,7-11,19"

我们还是和之前一样,把问题输入给我们的豆包ai。

答案

def solution(plates: list[int], n: int) -> str: result = [] current_sequence = []

for i in range(n):
    if not current_sequence or plates[i] == current_sequence[-1] + 1:
        # 如果当前序列是空的,或者当前元素可以加入当前序列
        current_sequence.append(plates[i])
    else:
        # 否则,处理当前序列并开始新的序列
        if len(current_sequence) >= 3:
            result.append(f"{current_sequence[0]}-{current_sequence[-1]}")
        else:
            result.extend(map(str, current_sequence))
        current_sequence = [plates[i]]

# 处理最后一个序列
if len(current_sequence) >= 3:
    result.append(f"{current_sequence[0]}-{current_sequence[-1]}")
else:
    result.extend(map(str, current_sequence))

return ",".join(result)

if name == "main": # You can add more test cases here print(solution([-3, -2, -1, 2, 10, 15, 16, 18, 19, 20], 10) == "-3--1,2,10,15,16,18-20") print(solution([-6, -3, -2, -1, 0, 1, 3, 4, 5, 7, 8, 9, 10, 11, 14, 15, 17, 18, 19, 20], 20) == "-6,-3-1,3-5,7-11,14,15,17-20") print(solution([1, 2, 7, 8, 9, 10, 11, 19], 8) == "1,2,7-11,19")

如果我们需要解析,还可以继续问我们的豆包ai

解析

代码解释 初始化:

result 用于存储最终的分组结果。 current_sequence 用于存储当前正在处理的连续序列。 遍历数组:

使用 for 循环遍历 plates 数组。 检查当前元素是否可以加入 current_sequence。 处理序列:

如果当前元素不能加入 current_sequence,则根据 current_sequence 的长度决定是否将其加入 result。 开始一个新的 current_sequence。 处理最后一个序列:

遍历结束后,处理最后一个 current_sequence。 格式化输出:

使用 join 方法将 result 列表中的元素格式化为字符串输出。 你可以将这段代码复制到你的编辑区中进行测试。 这就是今天这道题目的答案解析了。