zoukankan      html  css  js  c++  java
  • LeetCode.941-有效山形数组(Valid Mountain Array)

    这是悦乐书的第360次更新,第387篇原创

    01 看题和准备

    今天介绍的是LeetCode算法题中Easy级别的第222题(顺位题号是941)。给定一个整数数组A,当且仅当它是一个有效的山形数组时返回true

    • 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]
    

    例如:

    输入:[2,1]
    输出:false

    输入:[3,5,5]
    输出:false

    输入:[0,3,2,1]
    输出:true

    注意

    • 0 <= A.length <= 10000

    • 0 <= A [i] <= 10000

    02 解题

    根据题目的规则,要满足山形数组的条件,不仅数组元素个数要大于等于三个,并且要存在一个值,使得在这个值之前的元素是递增形势,在这个值之后的元素是递减形势。

    从数组第一个元素开始遍历,做递增判断,直到不满足条件为止,经历递增的判断后,需要判断索引是否位于中间,即不能是0或者是最后一个,再继续递减的判断,判断结束后,判断索引是否等于最后一位即可。

    public boolean validMountainArray(int[] A) {
        if (A == null || A.length < 3) {
            return false;
        }
        int index = 0, n = A.length-1;
        while (index < n && A[index] < A[index+1]) {
            index++;
        }
        // 如果A是单调递增或者单调递减,直接返回false
        if (index == 0 || index == n) {
            return false;
        }
        while (index < n && A[index] > A[index+1]) {
            index++;
        }
        return index == n;
    }
    

    03 小结

    算法专题目前已连续日更超过七个月,算法题文章228+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。

    以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

  • 相关阅读:
    c语言之数据类型
    C语言之概述
    012.day12
    011.day011
    010.day010
    010.day08
    010.周六自习
    009.day07
    008.day06
    007.day05
  • 原文地址:https://www.cnblogs.com/xiaochuan94/p/11063041.html
Copyright © 2011-2022 走看看