Skip to content

Latest commit

 

History

History
32 lines (27 loc) · 843 Bytes

658.-find-k-closest-elements.md

File metadata and controls

32 lines (27 loc) · 843 Bytes

658. Find K Closest Elements

class Solution:
    def findClosestElements(self, arr: List[int], k: int, x: int) -> List[int]:
        ### 10^4 可以先排序
        return sorted(sorted(arr,key = lambda n : abs(n-x))[:k])

class Solution:
    def findClosestElements(self, arr: List[int], k: int, x: int) -> List[int]:

        if x < arr[0]:
            return arr[:k]
        if x > arr[-1]:
            return arr[-k:]
        
        l, r = 0, len(arr)-k
        ## 区间 [) 
        while l < r: ## 终止 == 
            mid = (l + r)//2
            ## [1,2,3,4,5]
            ## [0,1,2,3,4]
            ## first mid 0
            ## dis 
            ### 如何更新
            if abs(arr[mid] - x) > abs(arr[mid+k]-x):
                l = mid+1
            else:
                r = mid
        return arr[l:l+k]