首页 技术 正文
技术 2022年11月20日
0 收藏 644 点赞 2,294 浏览 881 个字

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

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

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,491
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,493
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,294