在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
  • 返回真

让我们看以下实现以获得更好的理解——

示例

 现场演示

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

更新时间:2020-09-23

794次查看

开启您的 事业

完成课程后获得认证

开始
广告