2
public long[] getDistances(int[] arr) {3
long[] output = new long[arr.length];4
Map<Integer, Long> sumMap = new HashMap<>();5
Map<Integer, Integer> countMap = new HashMap<>();6
for (int i = 0; i < arr.length; ++i) {7
if (!sumMap.containsKey(arr[i])) {8
sumMap.put(arr[i], 0l);9
countMap.put(arr[i], 0);12
output[i] += i * (long) countMap.get(arr[i]) - sumMap.get(arr[i]);13
sumMap.put(arr[i], sumMap.get(arr[i]) + i);14
countMap.put(arr[i], countMap.get(arr[i]) + 1);17
sumMap = new HashMap<>();18
countMap = new HashMap<>();20
for (int i = len - 1; i >= 0; --i) {21
if (!sumMap.containsKey(arr[i])) {22
sumMap.put(arr[i], 0l);23
countMap.put(arr[i], 0);26
output[i] += (len - i - 1) * (long) countMap.get(arr[i]) - sumMap.get(arr[i]);27
sumMap.put(arr[i], sumMap.get(arr[i]) + (len - i - 1));28
countMap.put(arr[i], countMap.get(arr[i]) + 1);