You are given an integer array nums sorted in non-decreasing order.
Build and return an integer array result with the same length as nums such that result[i] is equal to the summation of absolute differences between nums[i] and all the other elements in the array.
In other words, result[i] is equal to sum(|nums[i]-nums[j]|) where 0 <= j < nums.length and j != i (0-indexed).
class Solution {
public int[] getSumAbsoluteDifferences(int[] nums) {
int n = nums.length;
int[] prefixSum = new int[n + 1];
for (int i = 1; i <= n; i ++) {
prefixSum[i] = prefixSum[i - 1] + nums[i - 1];
}
int[] res = new int[n];
for (int i = 0; i < n; i ++) {
int left = prefixSum[i];
int right = prefixSum[n] - prefixSum[i + 1];
// System.out.println(left + ", " + right);
res[i] = (nums[i] * i - left) + (right - nums[i] * (n - 1 - i));
}
return res;
}
}