python | 算法练习 在排序数组中找最接近的K个数
分析:
首和尾两个指针,左边指针对应的值与目标 target 的差,与右边指针对应的值与目标 target的差进行比较
左边的差<=右边的差
则右边指针向左移动一个
反之:
左边指针向右移动一个
直到左指针到有指针的元素个数 == k 的时候,说明取到 k 个距离 target 最近的整数了
对A[left_index: right_index+1]中的元素,与目标 target的差值进行升序排序
得到目标列表
class Solution:
"""
@param A: an integer array
@param target: An integer
@param k: An integer
@return: an integer array
"""
def kClosestNumbers(self, A, target, k):
# write your code here
left_index = 0
right_index = len(A) - 1
if k == 0:
return []
if right_index - left_index + 1 == k:
sort_result_list = sorted(result_list, key=lambda result_list: result_list["sub"])
return [res["value"] for res in sort_result_list]
left_close = abs(target - A[left_index])
right_close = abs(A[right_index] - target)
if left_close <= right_close:
right_index -= 1
if left_close > right_close:
left_index += 1
补充:
对列表进行按照元素字典的键进行排序:
sorted(result_list,key=lambda result_list:result["key"])
取绝对值:
abs()
评论