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

Đếm số cặp (i, j) có phần tử bằng nhau trong mảng Python

Cho mảng nums. Tìm số cặp (i, j) sao cho nums[i] == nums[j] và i ≠ j.

Ví dụ: nums = [1,3,1,3,5] → kết quả 4. Các cặp: (0,2), (2,0), (1,3), (3,1).

Giải thuật

  • Dùng từ điển d đếm tần suất mỗi giá trị.
  • Khởi tạo res = 0.
  • Với mỗi giá trị c có tần suất > 1: res += d[c] * (d[c] - 1).
  • Trả về res.

Ví dụ mã Python

def solve(nums):
    d = {}
    for c in nums:
        d[c] = d.get(c, 0) + 1
    res = 0
    for c in d:
        if d[c] > 1:
            res += d[c] * (d[c] - 1)
    return res

nums = [1, 3, 1, 3, 5]
print(solve(nums))  # Output: 4

Đầu vào

[1,3,1,3,5]

Đầu ra

4