获得徽章 0
- #青训营笔记创作活动# 分组飞行棋棋子
问题描述
小M和小F在玩飞行棋。游戏结束后,他们需要将桌上的飞行棋棋子分组整理好。现在有 N 个棋子,每个棋子上有一个数字序号。小M的目标是将这些棋子分成 M 组,每组恰好5个,并且组内棋子的序号相同。小M希望知道是否可以按照这种方式对棋子进行分组。
例如,假设棋子序号为 [1, 2, 3, 4, 5],虽然只有5个棋子,但由于序号不同,因此不能形成有效的分组。如果序号是 [1, 1, 1, 1, 1, 2, 2, 2, 2, 2],则可以形成两个有效分组,因此输出为 True。
解决思路
统计棋子数量:先统计每个序号对应的棋子数量。我们可以用 collections.Counter 来统计,这样就可以知道每个序号出现的次数。
检查分组有效性:对每种序号的棋子数量检查是否能被 5 整除。因为每组需要 5 个相同的序号,如果某个序号的数量不是 5 的倍数,就无法形成有效分组。
返回结果:如果所有序号的数量都可以被 5 整除,那么可以分组,返回 "True";否则,返回 "False"。
from collections import Counter
def solution(nums):
# 统计每个序号的棋子数量
count = Counter(nums)
# 检查每个序号的数量是否可以被5整除
for num, freq in count.items():
if freq % 5 != 0:
return "False"
return "True"展开评论点赞