找数组的波谷
算法的分析来自与‘待字闺中’微信公众平台
利用python语言实现(刚学习python,练习一下)。
第一种方法:
__author__ = 'ledao'
arr = [9, 7, 6, 2, 1, 3, 7]
def vally(arr):
arrLength = len(arr)
if arr[0] < arr[1] or arr[arrLength-1] < arr[arrLength-2]:
print arr, 'doesn\'t match the vally array!'
return -1
for i in xrange(1, arrLength-2):
if arr[i-1] >= arr[i] and arr[i] <= arr[i+1]:
return i
print 'error occurs!'
return -1
print vally(arr)
第二种方法:
__author__ = 'ledao '
arr = [9, 7, 6, 2, 1, 3, 7]
def vally(arr, left, right):
if arr[left] < arr[left+1] or arr[right] < arr[right-1]:
print arr, 'doesn\'t match the vally array!'
return -1
for i in xrange(0, len(arr)):
mid = (left + right) / 2
if arr[mid-1] >= arr[mid] and arr[mid+1] >= arr[mid]:
return mid
if arr[mid-1] <= arr[mid] and arr[mid] < arr[mid+1]:
right = mid
continue
if arr[mid+1] <= arr[mid] and arr[mid] < arr[mid-1]:
left = mid
continue
if arr[mid-1] < arr[mid] and arr[mid+1] < arr[mid]:
left = mid # or right = mid
continue
print 'error occurs!'
return -1
print vally(arr, 0, len(arr)-1)

浙公网安备 33010602011771号