我想在O(log n) complexity
中实现它。使用binary search
的思想可以实现它。我是这样说的:让我是一个列表;L= [12,10,9,7,6,5,8,9,11]
所以预期的结果应该是5
。在python
中是否有一个简单的算法来实现它?你知道吗
def binse(l,lo,hi):
n =len(l)
lo = 0
hi =n
mid =(lo+hi)//2
if (hi-lo)<2:
return lo
if l[mid]<l[mid-1] and l[mid]<l[mid+1]:
return l[mid]
elif l[mid]<l[mid-1] and l[mid]>l[mid+1]:
return binse(l,mid+1,hi)
elif l[mid]>l[mid-1] and l[mid]<l[mid+1]:
return binse(l,lo,mid)
else:
return
l = [13,11,5,6,7,8,9,11,13]
lo =0
hi =len(l)
print(binse(l,lo,hi))
你说的-用二进制搜索。在每个探针上,取两个连续的条目并确定值是增加还是减少。基于此,你知道该进一步细分哪个地区。你知道吗
顺便说一句,我忽略了平等的问题
根据发布的代码更新:
return lo
行显然是错误的,因为它没有返回数组值第一项是您看到无限递归的原因。你知道吗
这应该管用。你知道吗
相关问题 更多 >
编程相关推荐