Medium
Intervals Between Identical Elements — Python
Full explanation · Time O(n) · Space O(n)
# Time: O(n)
# Space: O(n)
import collections
class Solution(object):
def getDistances(self, arr):
"""
:type arr: List[int]
:rtype: List[int]
"""
lookup = collections.defaultdict(list)
for i, x in enumerate(arr):
lookup[x].append(i)
result = [0]*len(arr)
for idxs in lookup.itervalues():
prefix = [0]
for i in idxs:
prefix.append(prefix[-1]+i)
for i, idx in enumerate(idxs):
result[idx] = (idx*(i+1)-prefix[i+1]) + ((prefix[len(idxs)]-prefix[i])-idx*(len(idxs)-i))
return result