LeetCode #941. Valid Mountain Array

题目

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
posted @ 2020-11-23 09:38  老鼠司令  阅读(62)  评论(0)    收藏  举报