Minimum Absolute Difference Queries LeetCode solution in Python

1
class Solution:
2
def minDifference(self, nums: List[int], queries: List[List[int]]) -> List[int]:
3
# location of number
4
loc = defaultdict(list)
5
for i, num in enumerate(nums):
6
loc[num].append(i)
7

8
# start from sorted key thus keep tracking minimum difference
9
k = sorted(loc)
10

11
res = []
12
for a, b in queries:
13
cands = []
14
ans = float("inf")
15
for c in k:
16
# left and right range overlap means no available locations in range
17
if bisect.bisect_left(loc[c], a) == bisect.bisect(loc[c], b):
18
continue
19
if cands:
20
ans = min(ans, c - cands[-1])
21
cands.append(c)
22
if ans == float("inf"):
23
ans = -1
24
res.append(ans)
25
return res

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0