回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我想在<code>O(log n) complexity</code>中实现它。使用<code>binary search</code>的思想可以实现它。我是这样说的:让我是一个列表;<code>L= [12,10,9,7,6,5,8,9,11]</code>所以预期的结果应该是<code>5</code>。在<code>python</code>中是否有一个简单的算法来实现它?你知道吗</p>
<pre><code>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))
</code></pre>