nums라는 숫자 목록이 있다고 가정하고 다음과 같이 목록을 1개 이상의 그룹으로 나눌 수 있는지 확인해야 합니다. 1. 각 그룹의 크기가 2보다 크거나 같습니다. 2. 모든 그룹의 크기가 동일합니다. . 3. 각 그룹에 있는 모든 숫자는 동일합니다.
따라서 입력이 [3, 4, 6, 9, 4, 3, 6, 9]와 같으면 출력은 True가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- counts :=각 키가 고유한 요소이고 값이 빈도인 맵
- 온도 :=0
- 카운트의 각 카운트에 대해 다음을 수행합니다.
- temp가 0과 같으면
- temp :=count[count]
- 그렇지 않으면
- temp :=counts[count] 및 temp의 gcd
- temp가 1과 같으면
- 거짓을 반환
- 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