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

โปรแกรมตรวจสอบความถี่ของทุกค่าใน List ว่า Unique หรือไม่ (Python)

ปัญหา

กำหนด list nums (บวก/ลบ) ตรวจสอบว่า "จำนวนครั้งที่เกิด" ของแต่ละค่าเป็น unique หรือไม่ (ไม่มีค่าซ้ำกัน)

ตัวอย่าง: nums = [6, 4, 2, 9, 4, 2, 2, 9, 9, 9] → True
เพราะ: 6→1 ครั้ง, 4→2 ครั้ง, 2→3 ครั้ง, 9→4 ครั้ง (ทุกค่าต่างกัน)

วิธีแก้: ใช้ Counter

  1. นับความถี่แต่ละค่า → dictionary {value: count}
  2. ดึงค่า counts ทั้งหมด → list
  3. ตรวจสอบ: len(counts) == len(set(counts))

โค้ด Python

from collections import Counter

class Solution:
    def solve(self, nums):
        num_counts = dict(Counter(nums))
        occurrences = num_counts.values()
        return len(occurrences) == len(set(occurrences))

# ทดสอบ
ob = Solution()
print(ob.solve([6, 4, 2, 9, 4, 2, 2, 9, 9, 9]))  # True
print(ob.solve([1, 2, 2, 3, 3, 3]))               # True (1,2,3)
print(ob.solve([1, 1, 2, 2]))                     # False (2,2 ซ้ำ)

ความซับซ้อน

  • Time: O(n) - นับ + สร้าง set
  • Space: O(k) - k = จำนวนค่าที่ไม่ซ้ำ

การทำงานขั้นตอน

nums = [6, 4, 2, 9, 4, 2, 2, 9, 9, 9]
Counter(nums)     # {6:1, 4:2, 2:3, 9:4}
.values()         # [1, 2, 3, 4]
set(values)       # {1, 2, 3, 4}
len == len(set)   # 4 == 4 → True

Edge Cases

  • Empty list → True (vacuously true)
  • Single element → True
  • All same → False (count = n, only one unique count)