问题描述
小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"