问题描述:
给定一个目标数target,一个非负整数k,一个按照升序排列的数组A。在A中找出与target最接近的k个整数,返回这k个数并按照与target的接近程度从小到大排序,如果接近程度相同,那么值小的排在前面。
问题示例:
如果A=[1,2,3],target=2,k=3,那么返回[2,1,3];
如果A=[1,4,6,8],target=3,k=3,那么返回[4,1,6];
代码实现:
其实就是考场对于python列表的操作,以及在python中列表函数应用。
方法1:利用内置列表操作函数(有时候掌握内置列表操作函数是很重要的)
class Solution:
def Find_k_closest_num(self,L,cloest,target,k):
op_list = [x-target for x in L] #得到与target的差值的列表
abs_list = [abs(x) for x in op_list] #取绝对值,获取与target的接近值
for i in range(k):
min_num = min(abs_list) #寻找最接近的
min_index = abs_list.index(min_num) #得到最接近的值的索引
cloest.append(op_list[min_index]+target) #更新cloest列表
#分别移除abs_list和op_list中已经添加至cloest的元素
abs_list.remove(min_num)
op_list.pop

本文介绍了一种算法,用于在升序排列的数组中找到与目标数最接近的K个整数,并按接近程度排序。提供了两种方法,一种使用Python内置列表操作,另一种采用双指针技术。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



