Gist / February 17, 2024 / 1 min read / By Mahi Garg

Find K Closest Elements - LeetCode : Swift

Find K Closest Elements - LeetCode

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

Example 1:

Input: arr = [1,2,3,4,5], k = 4, x = 3
Output: [1,2,3,4]

Example 2:

Input: arr = [1,2,3,4,5], k = 4, x = -1
Output: [1,2,3,4]

Constraints:

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

Solution

class Solution {
    func findClosestElements(_ arr: [Int], _ k: Int, _ x: Int) -> [Int] {
        var low = 0
        var high = arr.count - 1

        while(high - low + 1 > k) {
            if abs(arr[low] - x) > abs(arr[high] - x) {
                low += 1
            } else {
                high -= 1
            }
        }
        return Array(arr[low...high])
    }
}