LeetCode #941. Valid Mountain Array
题目
解题方法
采用逻辑判断的方法,设置三个标志increased=0、increasing=1和peakfound=0,当arr[i+1]>arr[i]时,设置increased=1,表示已经有上坡了,这时如果increasing=0就返回False,因为此时本应该下坡,不应该出现arr[i+1]>arr[i];当arr[i+1]==arr[i]时返回False;当arr[i+1]<arr[i]时,如果peakfound=0,设置peakfound=1,increasing=0,代表找到山峰了,开始下坡。循环结束如果peakfound和increased都为1,返回True,否则返回False。
时间复杂度:O(n)
空间复杂度:O(1)
代码
class Solution:
def validMountainArray(self, arr: List[int]) -> bool:
if len(arr) < 3:
return False
increased = 0
increasing = 1
peakfound = 0
for i in range(len(arr) - 1):
if arr[i+1] > arr[i]:
increased = 1
if not increasing:
return False
elif arr[i+1] == arr[i]:
return False
else:
if not peakfound:
peakfound = 1
increasing = 0
if increased and peakfound:
return True
else:
return False

浙公网安备 33010602011771号