擅长:python、mysql、java
<p>可以使用排序键中的对分查找最近权重的索引:</p>
<pre><code>import bisect
def bisect_weight(sorted_keys, value):
index = bisect.bisect(sorted_keys, value)
# edge cases
if index == 0: return sorted_keys[0]
if index == len(sorted_keys): return sorted_keys[index - 1]
minor_weight = sorted_keys[index - 1]
greater_weight = sorted_keys[index]
return minor_weight if abs(minor_weight - value) < abs(greater_weight - value) else greater_weight
</code></pre>
<p>这样你只需要检查两个砝码,找到最好的一个。排序和二进制搜索可能比计算所有权重更快,并找到最佳权重。在</p>