leetocode 941 python
941. 有效的山脉数组
难度 简单 | 标签 数组
Description
给定一个整数数组 A,如果它是有效的山脉数组就返回 true,否则返回 false。
让我们回顾一下,如果 A 满足下述条件,那么它是一个山脉数组:
A.length >= 3- 在
0 < i < A.length - 1条件下,存在i使得:A[0] < A[1] < ... A[i-1] < A[i]A[i] > A[i+1] > ... > A[A.length - 1]

示例 1:
输入:[2,1] 输出:false
示例 2:
输入:[3,5,5] 输出:false
示例 3:
输入:[0,3,2,1] 输出:true
提示:
0 <= A.length <= 100000 <= A[i] <= 10000
My Solution
class Solution:
def validMountainArray(self, arr: List[int]) -> bool:
if len(arr)<3:
return False
up = True
for i in range(1,len(arr)):
if arr[i] < arr[i-1]:
# 注意一定要有上坡
if i == 1:
return False
up = False
elif arr[i] == arr[i-1]:
return False
else:
if up == False:
return False
# 注意一定要有下坡
if up == False:
return True
return False
参考解法:
解题思路:双指针
数组长度>=3,从左边由小到大遍历,从右边由大到小遍历,如果它们的峰值只有一个,并且不在数组端点上,则满足是山坡的条件。
class Solution:
def validMountainArray(self, arr: List[int]) -> bool:
left = 0
right = len(arr)-1
while left<len(arr)-1 and arr[left]<arr[left+1]:
left+=1
while right>0 and arr[right]<arr[right-1]:
right-=1
if left==right and left!=0 and right!=len(arr)-1:
return True
return False

浙公网安备 33010602011771号