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

ตรวจสอบจำนวนครั้งที่เกิดซ้ำไม่ซ้ำกันใน Python


ให้อาร์เรย์ ต้องตรวจสอบว่าแต่ละสมาชิกมีจำนวนครั้งที่เกิด (occurrences) ที่ไม่ซ้ำกันหรือไม่ ถ้าไม่มีค่าซ้ำ คืน True มิฉะนั้น False

ตัวอย่าง: [1, 1, 2, 2, 2, 3, 4, 4, 4, 4] คืน True เพราะ 1 เกิด 2 ครั้ง, 2 เกิด 3 ครั้ง, 3 เกิด 1 ครั้ง, 4 เกิด 4 ครั้ง (ทุกค่าไม่ซ้ำกัน)

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

  1. หาความถี่ (frequency) ของแต่ละสมาชิกในอาร์เรย์
  2. สร้าง map l เก็บความถี่ที่เจอแล้ว
  3. วนลูปทุกคู่ key-value ใน frequency map:
    • ถ้า value อยู่ใน l แล้ว คืน False
    • เพิ่ม l[value] = 1
  4. จบลูปคืน 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()))