

思路
这题让判断一个数组是否是有效山峰数组,所谓有效山峰数组就是在数组中有且仅有一个最大值,并且最大值往前走是降序的,往后走也是降序的。
一种简单的解决方式就是使用两个变量left和right,我们也可以把它看做是两个指针,left从数组的前面开始,如果是升序的就一直找,直到遇到降序的时候停止,right从数组后面往前找,如果是升序的就一直找,直到遇到降序的时候停止。然后再判断left和right是否相等。如下图所示

def validMountainArray(A):length = len(A)left, right = 0, len - 1# 从左往右找,一直找到山峰为止while left + 1 < length and A[left] < A[left + 1]:left += 1# 从右往左找,一直找到山峰为止while right - 1 > 0 and A[right - 1] > A[right}]:right -= 1# 判断从左边到右边找的山峰是不是同一个return left > 0 and right < length - 1 and left == right
从一边开始找,找到山峰之后再往右边下山,如果能走到数组的最后一个元素,说明是有效山峰。
def validMountainArray(A):length = len(A)left = 0# 从左边往右边找,一直找到山峰为止while left + 1 < length and A[left] < A[left + 1]:left += 1if left == 0 or left == length - 1:return False# 找到山峰后,下山while left + 1 < length and A[left] > A[left + 1]:left += 1return left == length - 1
