배열 번호가 있다고 가정합니다. 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