658. Find K Closest Elements

Doyeon Kim·2022년 11월 13일

코딩테스트 공부

목록 보기
137/171

https://leetcode.com/problems/find-k-closest-elements/description/

타겟 에서 가까운 k(범위)개의 요소를 반환하라

예를 들어 [1,2,3,4,5]가 있고 x = 5 k=2ㄹㅏ고 하면

중간 범위M을 포함하여 k만큼 범위를 정하고 -> [2,3]
중간값에서 x를 뺀 값보다 범위 밖의 값(m+k)에서 x를 뺀 값이 작으면 범위 밖의 값이 x에 더 가깝다는 뜻이다.
띠리사 중간값의 위치를 수정한다.

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] > arr[m+k] - x:
                l = m+1
            else:
                r = m
        return arr[l:l+k]
profile
성장하고 도전하는 개발자. 프로그래밍 좋아하세요?

0개의 댓글