배열 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]