【发布时间】:2019-09-27 02:45:54
【问题描述】:
给定一个排序数组,我想获得等于或小于传递的键的最小元素
我已经尝试在每个元素之间找到间隙并返回间隙最小的那个,但这并没有给出预期的结果,因为它还返回大于传递的值
sorted_li= [25,22,15,14,12,6,4]
def find_nearest_small_value(key,sorted_li):
gap_current, gap_global, value = 0, key, sorted_li[0]
for i in sorted_li:
gap_current = abs(i-key)
if gap_global>=gap_current:
gap_global=gap_current
value=i
return value
例如,上面带有 key=19 的代码将返回 22,因为那里的间隙是 3,尽管它应该返回 15,因为它小于 19,并且间隙最小
任何帮助将不胜感激谢谢:)
【问题讨论】:
-
听起来你使用了错误的“差距”计算然后......
-
这段代码总是返回 4... 你的意思是
return value吗? -
@cricket_007 是的,你是对的,虽然这是一个错字,但它仍然没有返回所需的输出
-
我不知道你为什么认为你需要计算差距。迭代时可以返回立即小于或等于key的元素
-
你字面意思是给定一个排序数组。如果您有一个未排序的数组,那么这是一个单独的问题