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

Python에서 정렬된 배열에서 절대 차이의 합을 찾는 프로그램

<시간/>

배열 num이 있고 내림차순으로 정렬되어 있다고 가정합니다. result[i]가 nums[i]와 배열의 다른 모든 요소 간의 절대 차이의 합이 되도록 nums와 길이가 같은 result라는 배열을 만들어야 합니다.

따라서 입력이 nums =[5,7,12]와 같으면 출력은 [9, 7, 12]가 됩니다.

  • |5-5| + |5-7| + |5-12| =0+2+7 =9
  • |7-5| + |7-7| + |7-12| =2+0+5 =7
  • |5-12| + |7-12| + |12-12| =7+5+0 =12

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

  • res :=새 목록
  • s:=0
  • n :=숫자 크기
  • 1 ~ n - 1 범위의 i에 대해
    • s :=s + nums[i] - nums[0]
  • res 끝에 s 삽입
  • 1 ~ n - 1 범위의 i에 대해
    • diff :=nums[i] - nums[i-1]
    • s :=s + diff*i
    • s :=s - diff *(n-i)
  • res 끝에 s 삽입
  • 반환 결과

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

def solve(nums):
   res = []
   s=0
   n = len(nums)
   for i in range(1,n):
      s+=nums[i]-nums[0]
   res.append(s)
   for i in range(1,n):
      diff = nums[i]-nums[i-1]
      s += diff*i
      s -= diff *(n-i)
      res.append(s)
   return res

nums = [5,7,12]
print(solve(nums))

입력

[5,7,12]

출력

[9, 7, 12]