Sum of Absolute Differences in a Sorted Array

给一个排序好的数组, 求里面某个数字的与其他数字的绝对值之和.

这个题通过观察就可以看出来是前序和+后序和, 但是因为前序和后序是从两侧算的, 所以要通过减法使得从数字当前坐标开始计算.

class Solution {
    public int[] getSumAbsoluteDifferences(int[] nums) {
        int n = nums.length;
        int[] res = new int[n];
        int[] pre = new int[n + 1];
        int[] sub = new int[n + 1]; 
        for(int i = 1; i <=n; i++) {
            pre[i] = nums[i - 1] + pre[i - 1];
        } 
        for(int i = n - 1;i >= 0; i--) {
            sub[i] = nums[i] + sub[i + 1];
        } 
        for(int i = 0; i < n; i++) {
            res[i] = (i * nums[i] - pre[i]) + (sub[i] - nums[i] * (n - i));
        }
        return res;
    }
}