这是悦乐书的第345次更新,第369篇原创

01 看题和准备

今天介绍的是LeetCode算法题中Easy级别的第210题(顺位题号是896)。如果数组单调递增或单调递减,则数组是单调的。如果对于所有i <= j,A[i] <= A[j],则数组A是单调递增的。如果对于所有i <= j,A[i] >= A[j],则数组A是单调递减的。当且仅当给定的数组A是单调的时,才返回true。例如:

输入:[1,2,2,3]

输出:true

输入:[6,5,4,4]

输出:true

输入:[1,3,2]

输出:false

输入:[1,2,4,5]

输出:true

输入:[1,1,1]

输出:true

注意

  • 1 <= A.length <= 50000

  • -100000 <= A [i] <= 100000

02 第一种解法

使用两个循环,一个判断是否递增,一个判断是否递减,只要其中一个符合条件即可返回true。

public boolean isMonotonic(int[] A) {
return isIncrease(A) || isDecrease(A);
} public boolean isIncrease(int[] A) {
for (int i=0; i<A.length-1; i++) {
if (A[i] > A[i+1]) {
return false;
}
}
return true;
} public boolean isDecrease(int[] A) {
for (int i=0; i<A.length-1; i++) {
if (A[i] < A[i+1]) {
return false;
}
}
return true;
}

03 第二种解法

也可以只是用一次循环。

public boolean isMonotonic2(int[] A) {
boolean isincrease = true;
boolean isdecrease = true;
int n = A.length;
for (int i=0; i<n-1; i++) {
isincrease = isincrease && A[i] <= A[i+1];
isdecrease = isdecrease && A[i] >= A[i+1];
}
return isincrease || isdecrease;
}

04 第三种解法

针对第二种解法,我们分两种情况分别处理了isincrease、isdecrease两个变量。

public boolean isMonotonic3(int[] A) {
boolean isincrease = true;
boolean isdecrease = true;
int n = A.length;
for (int i=0; i<n-1; i++) {
if (A[i] < A[i+1]) {
isdecrease = false;
}
if (A[i] > A[i+1]) {
isincrease = false;
}
}
return isincrease || isdecrease;
}

05 第四种解法

也可以借助包装类Integercompare方法,比较相邻两个元素的大小,另外使用一个变量存储上一次比较的结果,每次做完新的比较后,用新的结果和前一次的结果比较,只要前后两次比较结果不同,可以直接返回false。

public boolean isMonotonic4(int[] A) {
int flag = 0, n = A.length;
for (int i=0; i<n-1; i++) {
int num = Integer.compare(A[i], A[i+1]);
if (num != 0) {
if (flag != 0 && flag != num) {
return false;
}
flag = num;
}
}
return true;
}

06 小结

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

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

LeetCode.896-单调数组(Monotonic Array)的更多相关文章

  1. LeetCode 896. 单调数列(Monotonic Array)

    896. 单调数列 896. Monotonic Array 题目描述 如果数组是单调递增或单调递减的,那么它是单调的. 如果对于所有 i<=j,A[i]<=A[j],那么数组 A 是单调 ...

  2. [Swift]LeetCode896. 单调数列 | Monotonic Array

    An array is monotonic if it is either monotone increasing or monotone decreasing. An array A is mono ...

  3. LeetCode 189. 旋转数组(Rotate Array)

    189. 旋转数组 LeetCode189. Rotate Array 题目描述 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数. 示例 1: 输入: [1,2,3,4,5,6, ...

  4. [LeetCode] 896. Monotonic Array 单调数组

    An array is monotonic if it is either monotone increasing or monotone decreasing. An array A is mono ...

  5. 896. Monotonic Array@python

    An array is monotonic if it is either monotone increasing or monotone decreasing. An array A is mono ...

  6. C#LeetCode刷题之#896-单调数列(Monotonic Array)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3760 访问. 如果数组是单调递增或单调递减的,那么它是单调的. ...

  7. 【LeetCode题解】数组Array

    1. 数组 直观地看,数组(Array)为一个二元组<index, value>的集合--对于每一个index,都有一个value与之对应.C语言中,以"连续的存储单元" ...

  8. 【Leetcode_easy】896. Monotonic Array

    problem 896. Monotonic Array solution1: class Solution { public: bool isMonotonic(vector<int>& ...

  9. Leetcode896.Monotonic Array单调数列

    如果数组是单调递增或单调递减的,那么它是单调的. 如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的. 如果对于所有 i <= j,A[i]> = ...

随机推荐

  1. linux上hadoop2.4.0安装配置

    1 环境准备 安装java-1.6(jdk) 安装ssh 1.1 安装jdk (1)下载安装jdk 在/usr/lib下创建java文件夹,输入命令: cd /usr/lib mkdir java 输 ...

  2. 第一次OllyDbg逆向记录(分析思路和注意点&其他文章)

    OllyDbg 操作菜单栏.工具栏.快捷键 C++调用加强 目录 OllyDbg 操作菜单栏.工具栏.快捷键    1 一.    载入观察    1 1.静态载入观察:    1 2.OD动态观察  ...

  3. @SafeVarargs 使用说明

    说明: @SafeVarargs 是jdk1.7引入的适用于可变参数与泛型能够更好结合的一个注解. 官方解释: 程序员认定带有注释的主体或者构造函数不会对其执行潜在的不安全操作 将此注释应用于未经检查 ...

  4. python的pexpect模块

    Pexpect 是 Don Libes 的 Expect 语言的一个 Python 实现,是一个用来启动子程序,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 Python 模块. P ...

  5. linux 标准i2c接口(一)

    一:I2C设备操作方式: 1.  应用程序操作法:i2c的设备的驱动可以直接利用linux内核提供的i2c-dev.c文件提供的ioctl函数接口在应用层实现对i2c设备的读写,但是在应用层使用ioc ...

  6. easyUI datagrid组件能否有display:none的隐藏效果

    这个项目用了JQ easyUI datagrid 组件,我今天做了一个页面,页面有个div层,div里放了一个easyUI datagrid,页面初始化时div隐藏(display:none),通过点 ...

  7. VUE 之 路由 VueRouter

    1.VueRouter的安装 1.1.https://unpkg.com/vue-router/dist/vue-router.js下载安装. 1.2.<script src="./s ...

  8. hihocode #1388 : Periodic Signal NTT

    #1388 : Periodic Signal   描述 Profess X is an expert in signal processing. He has a device which can ...

  9. configuration默认设置

    所以 上面的configuration的set可以省略,但是也可以自己改变设置,如下所示:

  10. Release Candidate

    RC_百度百科 https://baike.baidu.com/item/RC/7311964?fr=aladdin RC=Release Candidate,含义是"发布候选版" ...