设置两个字典,记录一个数字出现的最小最大位置。然后暴力遍历,用一个数字最小和另一个数字最大的位置相减,更新全局最大值。
class Solution:
def maxDistance(self, colors: List[int]) -> int:
dic1 = collections.defaultdict(int)
dic2 = collections.defaultdict(int)
for i, c in enumerate(colors):
if c not in dic1:
dic1[c] = i
else:
dic1[c] = min(i, dic1[c])
if c not in dic2:
dic2[c] = i
else:
dic2[c] = max(i, dic2[c])
res = float('-inf')
meet = set()
for k in dic1.keys():
if k in meet:continue
for t in dic1.keys():
if k == t:continue
temp1 = abs(dic1[k] - dic2[t])
temp2 = abs(dic2[k] - dic1[t])
temp = max(temp1, temp2)
res = max(temp, res)
meet.add(k)
return res