Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

จัดกลุ่มจำนวนเต็มใน Python

สมมติว่าเรามีรายการตัวเลขชื่อ nums เราต้องตรวจสอบว่าสามารถแบ่งรายการออกเป็น 1 หรือมากกว่ากลุ่มได้หรือไม่ โดยที่: 1. ขนาดของแต่ละกลุ่มมากกว่าหรือเท่ากับ 2 2. ขนาดของทุกกลุ่มเท่ากัน 3. ตัวเลขทั้งหมดในแต่ละกลุ่มเหมือนกัน

ตัวอย่าง

หากอินพุตคือ [3, 4, 6, 9, 4, 3, 6, 9] ผลลัพธ์จะเป็น True

ขั้นตอนการแก้ปัญหา

  1. counts := แมปที่แต่ละคีย์คือองค์ประกอบที่แตกต่างกันและค่าคือความถี่
  2. temp := 0
  3. สำหรับแต่ละ count ใน counts:
    • ถ้า temp เท่ากับ 0 ให้ temp := counts[count]
    • อื่นๆ ให้ temp := gcd ของ counts[count] และ temp
    • ถ้า temp เท่ากับ 1 ให้คืนค่า False
  4. คืนค่า 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