Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm số cặp (i, j) sao cho phần tử thứ i và thứ j giống nhau trong Python

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