작심삼일

[LeetCode] 658 | Find K Closest Elements | Python 본문

스터디/코테

[LeetCode] 658 | Find K Closest Elements | Python

yun_s 2022. 9. 29. 09:49
728x90
반응형

문제 링크:https://leetcode.com/problems/find-k-closest-elements/ 


문제

Given a sorted integer array arr, two integers k and x, return the k closest integers to x in the array. The result should also be sorted in ascending order.

An integer a is closer to x than an integer b if:

  • |a - x| < |b - x|, or
  • |a - x| == |b - x| and a < b

조건

  • 1 <= k <= arr.length
  • 1 <= arr.length <= $10^4$
  • arr is sorted in ascending order.
  • $-10^4$ <= arr[i], x <= $10^4$

내 풀이

arr을 맨 앞부터 k번째까지 list를(ans) 가져온다.

오름차순으로 정리되어있으므로 arr를 쭉 훑으며 x와의 거리가 'ans[0]와 x의 거리'보다 작다면 ans의 맨 앞 원소를 빼고 새 원소를 뒤에 넣는다.

이 과정을 arr의 끝까지 반복한다.


코드

class Solution:
    def findClosestElements(self, arr: List[int], k: int, x: int) -> List[int]:
        ans = arr[:k]
        
        for num in arr[k:]:
            if abs(ans[0]-x) > abs(num-x):
                ans.pop(0)
                ans.append(num)
        
        return ans
728x90
반응형
Comments