这是悦乐书的第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+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。

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

LeetCode.941-有效山形数组(Valid Mountain Array)的更多相关文章

  1. LeetCode 941. 有效的山脉数组(Valid Mountain Array)

    941. 有效的山脉数组 941. Valid Mountain Array 题目描述 给定一个整数数组 A,如果它是有效的山脉数组就返回 true,否则返回 false. 让我们回顾一下,如果 A ...

  2. [Swift]LeetCode941. 有效的山脉数组 | Valid Mountain Array

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

  3. 【LeetCode】941. Valid Mountain Array 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...

  4. 【leetcode】941. Valid Mountain Array

    题目如下: Given an array A of integers, return true if and only if it is a valid mountain array. Recall ...

  5. 【Leetcode_easy】941. Valid Mountain Array

    problem 941. Valid Mountain Array solution: class Solution { public: bool validMountainArray(vector& ...

  6. Valid Mountain Array LT941

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

  7. Weekly Contest 111-------->941. Valid Mountain Array(max_element)

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

  8. LeetCode 852. Peak Index in a Mountain Array C++ 解题报告

    852. Peak Index in a Mountain Array -- Easy 方法一:二分查找 int peakIndexInMountainArray(vector<int>& ...

  9. LeetCode 941. Valid Mountain Array (有效的山脉数组)

    题目标签:Array 题目给了一组int array A,让我们判断它是否是 一个山脉数组. 山脉数组一定要有一个最高值,然后要同时有 山坡和下坡. 想法是,从左边开始依次比较两个数字,int[0] ...

随机推荐

  1. 高性能mysql 第10章 复制

    复制功能不仅能够构建高可用的应用,同时也是高可用性,可扩展性,灾难恢复,备份以及数据仓库等工作的基础. mysql支持两种复制方式:基于语句的复制和基于行的复制.基于语句的复制(也成为逻辑复制)是早期 ...

  2. Java的面向对象属性

    定义类 定义类的过程就是定义类的属性的过程: 类的属性就是累的静态属性的简称,指类内包含的各项数据. 类的服务被称为成员函数或方法. 继承extends 通过定义继承方法,子类可以获得父类的所有属性和 ...

  3. GridControl的列DisplayFormat自定义方法

    定义格式化的类: public class EnableFormat : IFormatProvider, ICustomFormatter { public object GetFormat(Typ ...

  4. 线上 CPU100% 排查方案

    问题:生产服务器上部署了几个java程序,突然出现了CPU100%的异常告警,你如何定位出问题呢? 下面给出两种系统下的排查步骤,都是一模一样的,只是命令稍有区别! 查消耗cpu最高的进程PID 根据 ...

  5. [HG]腿部挂件 题解

    前言 暴力跑的比正解快. 以下暴力(循环展开+fread读入输出优化) #include<cstdio> #pragma GCC optimize(3, "Ofast" ...

  6. 分治NTT:我 卷 我 自 己

    感觉这种东西每次重推一遍怪麻烦的,就写在这里了. 说白了就是根据分治区间左端点是否为\(0\)分类讨论一下,一般是如果不是\(0\)就要乘\(2\),不过还是需要具体问题具体分析一下才好(就比如下面的 ...

  7. A.Equivalent Prefixes(ST算法)

    Equivalent Prefixes 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 524288K,其他语言1048576K 64bit IO Format: %lld 题目描述 ...

  8. R_Studio(关联)对Groceries数据集进行关联分析

    RGui的arules程序包里含有Groceries数据集,该数据集是某个杂货店一个月真实的交易记录,共有9835条消费记录,169个商品 #install.packages("arules ...

  9. php的 strval函数

    官方的解释 PHP strval() 函数 PHP 可用的函数 strval() 函数用于获取变量的字符串值. PHP 版本要求: PHP 4, PHP 5, PHP 7 语法 string strv ...

  10. Java多线程核心知识

    多线程相对于其他 Java 知识点来讲,有一定的学习门槛,并且了解起来比较费劲.在平时工作中如若使用不当会出现数据错乱.执行效率低(还不如单线程去运行)或者死锁程序挂掉等等问题,所以掌握了解多线程至关 ...