658. Find K Closest Elements

class Solution:
    def findClosestElements(self, arr: List[int], k: int, x: int) -> List[int]:
        
        l, r = 0, len(arr) - k

        while l < r:
            m = (l + r) // 2

            if x > arr[m + k]:
                l = m + 1
            elif x < arr[m]:
                r = m
            else:
                if abs(arr[m] - x) > abs(arr[m + k] - x):
                    l = m + 1
                else:
                    r = m


        return arr[l : l + k]

CleanShot 2024-07-07 at 16.23.54.png