สมมติว่าเรามีรายการตัวเลขชื่อ nums เราต้องตรวจสอบว่าสามารถแบ่งรายการออกเป็น 1 หรือมากกว่ากลุ่มได้หรือไม่ โดยที่: 1. ขนาดของแต่ละกลุ่มมากกว่าหรือเท่ากับ 2 2. ขนาดของทุกกลุ่มเท่ากัน 3. ตัวเลขทั้งหมดในแต่ละกลุ่มเหมือนกัน
ตัวอย่าง
หากอินพุตคือ [3, 4, 6, 9, 4, 3, 6, 9] ผลลัพธ์จะเป็น True
ขั้นตอนการแก้ปัญหา
counts:= แมปที่แต่ละคีย์คือองค์ประกอบที่แตกต่างกันและค่าคือความถี่temp:= 0- สำหรับแต่ละ
countในcounts:- ถ้า
tempเท่ากับ 0 ให้temp := counts[count] - อื่นๆ ให้
temp := gcd ของ counts[count] และ temp - ถ้า
tempเท่ากับ 1 ให้คืนค่าFalse
- ถ้า
- คืนค่า
True
การใช้งาน
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