LeetCode-Valid Mountain Array

本文介绍了一种算法,用于判断一个整数数组是否构成有效的山形数组。山形数组需满足特定的增长和衰减条件,且长度至少为3。文章详细阐述了通过一次遍历来确定数组是否符合山形特性的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Description:
Given an array A of integers, return true if and only if it is a valid mountain array.

Recall that A is a mountain array if and only if:

A.length >= 3
There exists some i with 0 < i < A.length - 1 such that:
    A[0] < A[1] < ... A[i-1] < A[i]
    A[i] > A[i+1] > ... > A[B.length - 1]

Example 1:

Input: [2,1]
Output: false

Example 2:

Input: [3,5,5]
Output: false

Example 3:

Input: [0,3,2,1]
Output: true

Note:

  • 0 <= A.length <= 10000
  • 0 <= A[i] <= 10000

题意:判断数组A是否存在小标iii,使得A[0]&lt;A[1]&lt;...A[i−1]&lt;A[i]A[0] &lt; A[1] &lt; ... A[i-1] &lt; A[i]A[0]<A[1]<...A[i1]<A[i]A[i]&gt;A[i+1]&gt;...&gt;A[B.length−1]A[i] &gt; A[i+1] &gt; ... &gt; A[B.length - 1]A[i]>A[i+1]>...>A[B.length1];并且AAA的长度大于或等于3,0&lt;i&lt;A.length−10 &lt; i &lt; A.length - 10<i<A.length1

解法:我们只要分别从首尾遍历,找到第一个不满足大小关系的位置后,判断这两个位置是否相同即可,具体流程如下

  1. for st in [0, A.length - 1)
  2. until A[st] > A[st + 1]
  3. for ed in [A.length - 1, 1]
  4. until A[ed] > A[ed - 1]
  5. 比较st与ed是否相同,并且满足st与ed的位置在(0, A.length - 1)
Java
class Solution {
    public boolean validMountainArray(int[] A) {
        if (A.length < 3) {
            return false;
        }
        int st = 0;
        int ed = A.length - 1;
        while (st < A.length - 1 && A[st] < A[st + 1]) {
            st++;
        }
        while (ed > 0 && A[ed] < A[ed - 1]) {
            ed--;
        }
        
        return st == ed && st != 0 && st != A.length - 1 ? true : false;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值