Minimum Absolute Difference Between Elements With Constraint

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
from sortedcontainers import SortedSet

class Solution:
    def minAbsoluteDifference(self, nums: List[int], x: int) -> int:
        previous_numbers = SortedSet()
        result = float('inf')
        for i in range(x, len(nums)):
            if result > 0:
                previous_numbers.add(nums[i - x])
                it = previous_numbers.bisect(nums[i])
                if it != 0:
                    result = min(result, nums[i] - previous_numbers[it - 1])
                if it != len(previous_numbers):
                    result = min(result, previous_numbers[it] - nums[i])
        return result