|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
今天的题目:
给一个目标数 target,一个非负整数 k 和一个按照升序排列的数组 A。
在 A 中找与 target 最接近的 k 个整数。
返回这 k 个数并按照与 target 的接近程度从小到大排序。如果接近程度相等,那么小的数排在前面。
示例 1:
输入:A = [1, 2, 3], target = 2, k = 3
输出:[2, 1, 3] 示例 2:
输入:A = [1, 4, 6, 8], target = 3, k = 3
输出:[4, 1, 6]
 欢迎大家一起答题! 
- def func_301(target,k,l):
- p,q=0,len(l)
- while (p<q):
- n=(p+q)//2
- if l[n]>=target:
- q=n
- else:
- p=n+1
- p-=1
- ret=[]
- for i in range(k):
- m=-1
- if p>=0:
- m=1
- n=abs(target-l[p])
- if q<len(l) and (m==-1 or n>abs(target-l[q])):
- m=2
- if (m==1):
- ret.append(l[p])
- p-=1
- elif (m==2):
- ret.append(l[q])
- q+=1
- return ret
复制代码
|
|