ให้อาร์เรย์ ต้องตรวจสอบว่าแต่ละสมาชิกมีจำนวนครั้งที่เกิด (occurrences) ที่ไม่ซ้ำกันหรือไม่ ถ้าไม่มีค่าซ้ำ คืน True มิฉะนั้น False
ตัวอย่าง: [1, 1, 2, 2, 2, 3, 4, 4, 4, 4] คืน True เพราะ 1 เกิด 2 ครั้ง, 2 เกิด 3 ครั้ง, 3 เกิด 1 ครั้ง, 4 เกิด 4 ครั้ง (ทุกค่าไม่ซ้ำกัน)
ขั้นตอนการแก้ปัญหา
- หาความถี่ (frequency) ของแต่ละสมาชิกในอาร์เรย์
- สร้าง map
lเก็บความถี่ที่เจอแล้ว - วนลูปทุกคู่ key-value ใน frequency map:
- ถ้า value อยู่ใน
lแล้ว คืนFalse - เพิ่ม
l[value] = 1
- ถ้า value อยู่ใน
- จบลูปคืน
True
ตัวอย่างโค้ด
class Solution(object):
def uniqueOccurrences(self, arr):
d = {}
for i in arr:
if i not in d:
d[i] = 1
else:
d[i] += 1
l = {}
for x, y in d.items():
if y in l:
return False
l[y] = 1
return True
ob1 = Solution()
print(ob1.uniqueOccurrences([1, 1, 2, 2, 2, 3, 4, 4, 4, 4]))
อินพุต
[1,1,2,2,2,3,4,4,4,4]
เอาต์พุต
True
วิธีแก้แบบ Pythonic (ใช้ Counter และ Set)
from collections import Counter
def uniqueOccurrences(arr):
freq = Counter(arr)
return len(freq.values()) == len(set(freq.values()))