852. 山脉数组的峰顶索引
这里的问题是l<=r 搭配mid+1 mid-1
而l<r搭配mid
class Solution:
def peakIndexInMountainArray(self, A):
"""
:type A: List[int]
:rtype: int
"""
l,r=0,len(A)-1
while l<=r:
mid=l+(r-l)//2
if A[mid]<A[mid+1]:
l=mid+1
elif A[mid]<A[mid-1]:
r=mid-1
else:
return mid
def peakIndexInMountainArray(self, A):
l, r = 0, len(A) - 1
while l < r:
mid = (l + r) / 2
if A[mid] < A[mid + 1]:
l = mid
elif A[mid - 1] > A[mid]:
r = mid
else:
return mid
class Solution:
def nextGreatestLetter(self, a, x):
"""
:type letters: List[str]
:type target: str
:rtype: str
"""
n = len(a)
if (x >= a[n - 1]):
x = a[0]
else:
x=chr(ord(x)+1)
lo = 0
hi = n - 1
while (lo <= hi):
mid = lo + (hi - lo) // 2
if (a[mid] == x):
return a[mid]
if (a[mid] < x):
lo = mid + 1
else:
hi = mid-1
return a[lo]
class Solution:
def nextGreatestLetter(self, a, x):
"""
:type letters: List[str]
:type target: str
:rtype: str
"""
n = len(a)
if (x >= a[n - 1]):
x = a[0]
else:
x=chr(ord(x)+1)
lo = 0
hi = n - 1
while (lo <= hi):
mid = lo + (hi - lo) // 2
if (a[mid] == x):
return a[mid]
if (a[mid] < x):
lo = mid + 1
else:
hi = mid
return a[hi]