Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Số Lần Xuất Hiện Duy Nhất (Unique Occurrences) Trong Python

Cho mảng số nguyên. Kiểm tra xem tần suất xuất hiện của mỗi phần tử có độc nhất hay không (không có 2 phần tử nào cùng tần suất). Trả về True nếu tất cả tần suất khác nhau, ngược lại False.

Ví dụ: [1, 1, 2, 2, 2, 3, 4, 4, 4, 4] → True (1:2 lần, 2:3 lần, 3:1 lần, 4:4 lần - tất cả khác nhau).

Thuật toán

  1. Đếm tần suất mỗi phần tử → dictionary freq
  2. Duyệt các giá trị tần suất:
    • Nếu tần suất đã xuất hiện trong set seen → trả về False
    • Thêm tần suất vào seen
  3. Trả về True

Ví dụ (Python)

class Solution(object):
    def uniqueOccurrences(self, arr):
        freq = {}
        for num in arr:
            freq[num] = freq.get(num, 0) + 1
        
        seen = set()
        for count in freq.values():
            if count in seen:
                return False
            seen.add(count)
        return True

ob1 = Solution()
print(ob1.uniqueOccurrences([1, 1, 2, 2, 2, 3, 4, 4, 4, 4]))  # True
print(ob1.uniqueOccurrences([1, 2]))  # False (cả 2 đều xuất hiện 1 lần)

Cách ngắn gọn (Pythonic)

from collections import Counter

def uniqueOccurrences(arr):
    freq = Counter(arr)
    return len(freq.values()) == len(set(freq.values()))

Độ phức tạp

  • Thời gian: O(n)
  • Không gian: O(n)

Đầu vào / Đầu ra

Input:  [1, 1, 2, 2, 2, 3, 4, 4, 4, 4]
Output: True

Input:  [1, 2]
Output: False