在Python中对整数进行分组
假设我们有一个名为nums的数字列表,我们必须检查我们是否可以将列表拆分为1个或多个组,以便:1. 每个组的大小大于或等于2。2. 所有组的大小相同。3. 每个组中出现的所有数字相同。
因此,如果输入像[3, 4, 6, 9, 4, 3, 6, 9],则输出将为真。
要解决此问题,我们将遵循以下步骤——
- counts := 一个映射,其中每个键都是不同的元素,值是它们的频率
- temp := 0
- 对于counts中的每个计数,执行
- 如果temp与0相同,则
- temp := counts[count]
- 否则,
- temp := counts[count]和temp的最大公约数
- 如果temp与1相同,则
- 返回False
- 如果temp与0相同,则
- 返回真
让我们看以下实现以获得更好的理解——
示例
from collections import Counter import math class Solution: def solve(self, nums): counts = Counter(nums) temp = 0 for count in counts: if temp == 0: temp = counts[count] else: temp = math.gcd(counts[count], temp) if temp == 1: return False return True ob = Solution() L = [3, 4, 6, 9, 4, 3, 6, 9] print(ob.solve(L))
输入
[3, 4, 6, 9, 4, 3, 6, 9]
输出
True
广告