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
정렬된 정수 배열 arr, 두 정수 k와 x가 주어지면 배열에서 x에 가장 가까운 k개의 정수를 반환합니다. 결과도 오름차순으로 정렬해야 합니다.
정수 a는 다음의 경우 정수 b보다 x에 더 가깝습니다.
- |a - x| < |b - x| 또는
- |a - x| == |b - x|이고 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,1,2,3,4,5], k = 4, x = -1
Output: [1,1,2,3]
Constraints:
- 1 <= k <= arr.length
- 1 <= arr.length <= 10^4
- arr is sorted in ascending order.
- -10^4 <= arr[i], x <= 10^4
코드
class Solution {
fun findClosestElements(arr: IntArray, k: Int, x: Int): List<Int> {
var l = 0
var r = arr.size - k
while (l < r) {
val m = (l + r) / 2
if (x - arr[m] > arr[m + k] - x) {
l = m + 1
} else {
r = m
}
}
return arr.slice(l..l + k - 1)
}
}
'LeetCode > Sliding Window' 카테고리의 다른 글
[LeetCode][Kotlin] 1838. Frequency of the Most Frequent Element (0) | 2024.11.13 |
---|---|
[LeetCode][Kotlin] 567. Permutation in String (0) | 2024.11.07 |
[LeetCode][Kotlin] 424. Longest Repeating Character Replacement (0) | 2024.10.30 |