分组飞行棋棋子 题目解析| 豆包MarsCode AI 刷题

95 阅读1分钟

问题描述

小M和小F在玩飞行棋。游戏结束后,他们需要将桌上的飞行棋棋子分组整理好。现在有 N 个棋子,每个棋子上有一个数字序号。小M的目标是将这些棋子分成 M 组,每组恰好5个,并且组内棋子的序号相同。小M希望知道是否可以按照这种方式对棋子进行分组。

例如,假设棋子序号为 [1, 2, 3, 4, 5],虽然只有5个棋子,但由于序号不同,因此不能形成有效的分组。如果序号是 [1, 1, 1, 1, 1, 2, 2, 2, 2, 2],则可以形成两个有效分组,因此输出为 True

根据题意我们需要知道棋子的序号的种数,并验证出现次数是不是为5的倍数,若存在出现次数不是5的倍数的即可直接return "false"。

要快速获取数组内不同元素的个数,可以使用Python中的collections.Counter类 比如

`counter = Counter(nums)`

然后遍历验证出现次数是不是为5的倍数

`for count in counter.values():`
    `if count % 5 != 0:`
        `return "False"`
    

则完整代码如下

from collections import Counter

def solution(nums: list[int]) -> str:
counter = Counter(nums)

# 检查每个元素的计数是否是5的倍数
for count in counter.values():
    if count % 5 != 0:
        return "False"

return "True"