ปัญหา
กำหนด list nums (บวก/ลบ) ตรวจสอบว่า "จำนวนครั้งที่เกิด" ของแต่ละค่าเป็น unique หรือไม่ (ไม่มีค่าซ้ำกัน)
ตัวอย่าง: nums = [6, 4, 2, 9, 4, 2, 2, 9, 9, 9] → True
เพราะ: 6→1 ครั้ง, 4→2 ครั้ง, 2→3 ครั้ง, 9→4 ครั้ง (ทุกค่าต่างกัน)
วิธีแก้: ใช้ Counter
- นับความถี่แต่ละค่า → dictionary {value: count}
- ดึงค่า counts ทั้งหมด → list
- ตรวจสอบ: 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)