<p>我尝试了一个在线挑战,问题如下:</p>
<blockquote>
<p>You are given an array which increases at first and then starts decreasing.
For example: <code>2 3 4 5 6 7 8 6 4 2 0 -2</code>.
Find the maximum element of these array.</p>
</blockquote>
<p>下面是我使用二进制搜索的代码,它在O(log(n))中给出了正确的答案,但我不知道是否有更好的解决方案。
有人能帮我吗?在</p>
<pre><code>a= map(int, raw_input().split())
def BS(lo,hi):
mid = lo+ (hi-lo)/2
if a[mid]>=a[mid+1]:
if a[mid]>a[mid-1]:
return mid
else:
return BS(lo,mid)
else:
return BS(mid,hi)
print a[BS(0,len(a)-1)]
</code></pre>