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

Python의 정렬된 목록에서 모든 쌍의 절대 차이의 합을 찾는 프로그램

<시간/>

nums라고 하는 정렬된 숫자 목록이 있다고 가정하고 주어진 목록에 있는 모든 숫자 쌍 간의 절대 차이의 합을 찾아야 합니다. 여기서 우리는 (i, j)와 (j, i)가 서로 다른 쌍이라고 생각할 것입니다. 답이 매우 크면 결과를 10^9+7로 수정합니다.

따라서 입력이 nums =[2, 4, 8]과 같으면 출력은 |2 - 4|와 같이 24가 됩니다. + |2 - 8| + |4 - 2| + |4 - 8| + |8 - 2| + |8 - 4|.

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

  • m =10^9 + 7

  • 총계 :=0

  • 범위 0에서 숫자 크기까지의 i에 대해

    • 총계 :=총계 +(i*nums[i] - (숫자의 크기 - 1 - i) *nums[i]) mod m

  • 반환(2*총) 모드 m

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

예시

class Solution:
   def solve(self, nums):
      m = 10**9 + 7
      total = 0
      for i in range(len(nums)):
         total += (i*nums[i] - (len(nums) - 1 - i)*nums[i]) % m
      return (2*total) % m
ob = Solution()
nums = [2, 4, 8]
print(ob.solve(nums))

입력

[2, 4, 8]

출력

24