Giả sử chúng ta có một số mảng. Chúng ta phải tìm số cặp (i, j) sao cho nums [i] =nums [j] nhưng tôi không giống với j.
Vì vậy, nếu đầu vào giống như nums =[1,3,1,3,5], thì đầu ra sẽ là 4, vì các cặp là (0,2), (2,0), (1,3) và (3,1)
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- d:=một bản đồ mới
- đối với mỗi c trong nums, thực hiện
- d [c]:=(d [c] + 1) khi c có mặt trong d nếu không thì 1
- res:=0
- với mỗi c nằm trong danh sách các phần tử (x với mọi x thuộc d trong đó d [x]> 1), hãy thực hiện
- res:=res + (d [c] * (d [c] -1))
- trả lại res
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
def solve(nums): d = {} for c in nums: d[c] = d[c] + 1 if c in d.keys() else 1 res = 0 for c in (x for x in d if d[x] > 1): res += (d[c] * (d[c]-1)) return res nums = [1,3,1,3,5] print(solve(nums))
Đầu vào
[1,3,1,3,5]
Đầu ra
4