2121. Intervals Between Identical Elements (Medium) - TengnanYao/daily_leetcode GitHub Wiki
class Solution:
def getDistances(self, arr: List[int]) -> List[int]:
h = defaultdict(list)
s = defaultdict(int)
pre = defaultdict(int)
for i, num in enumerate(arr):
if num not in h:
h[num].append(0)
pre[num] = 0
h[num].append(i)
s[num] += i
result = [0] * len(arr)
for i, num in enumerate(arr):
diff = h[num][pre[num] + 1] - h[num][pre[num]]
s[num] -= (len(h[num]) - 1 - pre[num]) * diff
s[num] += pre[num] * diff
pre[num] += 1
result[i] = s[num]
return result