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ị
ccó 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