1906. Minimum Absolute Difference Queries (Medium) - TengnanYao/daily_leetcode GitHub Wiki
class Solution(object):
def minDifference(self, nums, queries):
"""
:type nums: List[int]
:type queries: List[List[int]]
:rtype: List[int]
"""
arr = sorted(list(set(nums)))
h = {val : i for i, val in enumerate(arr)}
n = len(arr)
dp = [[0] * n]
for i, num in enumerate(nums):
dp.append(dp[-1][:])
dp[-1][h[num]] += 1
h = {val : i for i, val in h.items()}
result = [-1] * len(queries)
for i, (l, r) in enumerate(queries):
arr = [h[j] for j in range(n) if dp[l][j] != dp[r + 1][j]]
if len(arr) > 1:
result[i] = min([arr[j + 1] - arr[j] for j in range(len(arr) - 1)])
return result