Leetcode 941. 有效的山脉数组

给定一个整数数组 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

 

提示:

  1. 0 <= A.length <= 10000
  2. 0 <= A[i] <= 10000 

 

 

**难度**: Easy

**标签**: 数组、


# -*- coding: utf-8 -*-
# @Author  : LG

"""
执行用时:236 ms, 在所有 Python3 提交中击败了93.30% 的用户
内存消耗:15 MB, 在所有 Python3 提交中击败了9.53% 的用户

解题思路:
    具体实现见代码注释
"""
class Solution:
    def validMountainArray(self, A: List[int]) -> bool:
        if len(A) < 3:  # 如果长<3,False
            return False
        if not (A[0] < A[1] and A[-1] < A[-2]): # 判断起始与结尾,如不满足则直接False
            return False

        up = True   # 记录上升状态
        for i in range(1, len(A)):
            if A[i] > A[i-1] and up:    # 如果当前上升,则跳过
                pass
            elif A[i] < A[i-1]: # 如果当前下降,则将状态至于下降
                up = False
            else:   # 如果下降状态,但数值增大,或数值不变,则False
                return False
        return True