Minimum Absolute Difference Queries LeetCode solution in Python
1class Solution:2def minDifference(self, nums: List[int], queries: List[List[int]]) -> List[int]:3# location of number4loc = defaultdict(list)5for i, num in enumerate(nums):6loc[num].append(i)78# start from sorted key thus keep tracking minimum difference9k = sorted(loc)1011res = []12for a, b in queries:13cands = []14ans = float("inf")15for c in k:16# left and right range overlap means no available locations in range17if bisect.bisect_left(loc[c], a) == bisect.bisect(loc[c], b):18continue19if cands:20ans = min(ans, c - cands[-1])21cands.append(c)22if ans == float("inf"):23ans = -124res.append(ans)25return res