问题描述
小M和小F在玩飞行棋。游戏结束后,他们需要将桌上的飞行棋棋子分组整理好。现在有 N
个棋子,每个棋子上有一个数字序号。小M的目标是将这些棋子分成 M
组,每组恰好5个,并且组内棋子的序号相同。小M希望知道是否可以按照这种方式对棋子进行分组。
例如,假设棋子序号为 [1, 2, 3, 4, 5]
,虽然只有5个棋子,但由于序号不同,因此不能形成有效的分组。如果序号是 [1, 1, 1, 1, 1, 2, 2, 2, 2, 2]
,则可以形成两个有效分组,因此输出为 True
。
测试样例
样例1:
输入:
nums = [1, 2, 3, 4, 5]
输出:"False"
样例2:
输入:
nums = [1, 1, 1, 1, 2, 1, 2, 2, 2, 2]
输出:"True"
样例3:
输入:
nums = [5, 5, 5, 5, 5, 5, 5, 5, 5, 5]
输出:"True"
样例4:
输入:
nums = [7, 7, 7, 8, 8, 8, 8, 8, 7, 7]
输出:"True"
样例5:
输入:
nums = [9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9]
输出:"False"
def solution(nums):
from collections import Counter
# 统计每种棋子的数量
counts = Counter(nums)
# 检查是否可以按要求分组
for count in counts.values():
# 每种棋子的数量必须是 5 的倍数
if count % 5 != 0:
return "False"
# 如果所有棋子的数量都是 5 的倍数,返回 True
return "True"
if __name__ == "__main__":
# 添加测试用例
print(solution([1, 3, 4, 5, 6, 5, 4]) == "False")
print(solution([1, 1, 1, 1, 2, 1, 2, 2, 2, 2]) == "True")
print(solution([11, 45, 49, 37, 45, 38, 3, 47, 35, 49, 26, 16, 24, 4, 45, 39, 28, 26, 14, 22, 4, 49, 18, 4, 4, 26, 47, 14, 1, 21, 9, 26, 17, 12, 44, 28, 24, 24, 10, 31, 33, 32, 23, 41, 41, 19, 17, 24, 28, 46, 28, 4, 18, 23, 48, 45, 7, 21, 12, 40, 2, 19, 19, 28, 32, 6, 27, 43, 6, 18, 8, 27, 9, 6, 6, 31, 37, 15, 26, 20, 43, 3, 14, 40, 20]) == "False")