在排序数组中找最接近的K个数
https://www.lintcode.com/problem/460/
Last updated
Was this helpful?
https://www.lintcode.com/problem/460/
Last updated
Was this helpful?
给一个目标数 target
, 一个非负整数 k
, 一个按照升序排列的数组 A
。在A
中找与target
最接近的k
个整数。返回这k
个数并按照与target
的接近程度从小到大排序,如果接近程度相当,那么小的数排在前面。
k
是一个非负整数,并且不大于已排序数组的长度。
给定数组的长度是正整数, 不会超过
数组中元素的绝对值不会超过
样例
样例 1:
样例 2:
挑战
O(logn + k) 的时间复杂度
解题思路:利用二分找出第一个>= target的数,以此为index分别向左右查找最接近target的数。 注意此刻先考虑边界,如果左边触头,则将剩下右边元素都加入,反之亦然。