Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 i번째와 j번째 요소가 같도록 쌍(i, j)의 수를 찾는 프로그램

<시간/>

배열 번호가 있다고 가정합니다. nums[i] =nums[j]인 쌍(i,j)의 수를 찾아야 하지만 i는 j와 동일하지 않습니다.

따라서 입력이 nums =[1,3,1,3,5]와 같으면 출력은 4가 됩니다. 쌍은 (0,2), (2,0), (1,3) 및 (3,1)

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • d :=새 지도
  • num에 있는 각 c에 대해 다음을 수행합니다.
    • d[c] :=(d[c] + 1) c가 d에 있을 때 그렇지 않으면 1
  • res :=0
  • 각 c는 요소 목록에 있습니다(d의 모든 x에 대해 x는 d[x]> 1인 경우), do
    • res :=res +(d[c] *(d[c]-1))
  • 반환 결과

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

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 resnums =[1,3,1,3,5]print(solve(nums)) 

입력

[1,3,1,3,5]

출력

4