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