在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次檢視

開啟您的 事業

完成課程後獲得認證

開始
廣告