python题目搜题软件高中信息技术会考python题目答案去哪搜
下载地址 https://share.weiyun.com/OvviwGnZ
资料目录 Python练习集100题 100道Python面试题 Python100经典练习题 Python经典题目100道题 Python题库(已收录100道真题) Python100例视频讲解课程 菜鸟教程Python教程100例 130道python练习题,涵盖基础内容的方方面面 Python考试题复习知识点试卷试题 PYTHON测试题和答案 python第一阶段考试题 Python经典面试题和答案解析 python期末考试复习试卷 python习题集大全(附答案解析) 老男孩Python全栈7期练习题(面试真题模拟) 尚观python第一阶段考试(面试真题模拟) 《Python程序设计基础与应用》习题答案 《Python快速编程入门》——课后题答案 Python编程基础张健 , 张良均课后习题及答案 Python程序设计基础及实践(慕课版)郭炜习题答案 Python程序设计基础习题答案与分析 python基础试题(含答案)
举例 K个最接近的元素 在函数find_closest_index基础上继续思考,已经获得了closest_index, 只需要找到剩余的K-1个元素就可以了。 剩余的K-1个元素,一定分布在closest_index 的两侧,借鉴归并排序的思路,把closest_index 两侧的元素视为两个数组,分别从left_index(closest_index-1)和right_index(closest_index + 1)开始进行遍历比较,如果lst[left_index] <= lst[right_index]则lst[left_index] 就是要找的那K-1个元素里的一个,此时left_index -= 1,游标向左滑动,继续进行比较 这里要考虑边界情况,如果left_index 超出了数组的索引范围,该如何比较呢,一侧超出了索引范围,剩余的最近元素一定集中在另一侧,此时,可以直接从另一侧数组里直接取剩余数量的元素,但我认为这样程序就会写的很复杂,要判断两侧的索引是否超出范围,要写很多if语句。 不弱这样处理,如果索引超出了范围,就认为这个索引上的元素是无穷大,这样就不需要判断左右两个索引是否超出范围以及取另一侧的剩余最近元素了。 示例代码 def find_closet_ele(lst, target, k): closet_ele_lst = [] closest_index = find_closest_index(lst, target) # 距离target最近的元素的位置 closet_ele_lst.append(lst[closest_index])
ele_count = 1 left_index = closest_index - 1 right_index = closest_index + 1 # 借鉴归并排序思路,向两侧滑动遍历 while ele_count < k: left_ele = get_ele(lst, left_index) right_ele = get_ele(lst, right_index) # 哪边元素距离target更近,哪边就走一步 if target - left_ele <= right_ele - target: closet_ele_lst.append(left_ele) left_index -= 1 else: closet_ele_lst.append(right_ele) right_index += 1 ele_count += 1
closet_ele_lst.sort() return closet_ele_lst
def get_ele(lst, index): # 索引超出范围的,返回无穷大 if index < 0 or index >= len(lst): return float("inf") return lst[index]
|