这是悦乐书的第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. Yii自动生成项目

      我喜欢尝试新鲜的东西.以前一直用gii生成工具,前几天突然发现用shell的方法,感觉很不错.特此总结一下yii的几个命令.   gii的工具页面: - Controller Generator ...

  2. register_shutdown_function函数详解

    设定错误和异常处理三函数 register_shutdown_function(array(‘Debug’,'fatalError’)); //定义PHP程序执行完成后执行的函数 set_error_ ...

  3. springmvc学习笔记(18)-json数据交互

    springmvc学习笔记(18)-json数据交互 标签: springmvc springmvc学习笔记18-json数据交互 springmvc进行json交互 环境准备 加入json转换的依赖 ...

  4. 甘特图——Excel搞定

    1. 甘特图 概念 甘特图就是条形图的一种. 甘特图是基于作业排序的目的,将活动与时间联系起来的最早尝试之中的一个. 这是什么意思呢?也就是说甘特图用来表示什么时间做什么事情,相当于一个计划安排.并且 ...

  5. Swift开发教程--怎样播放图片动画

    废话少说,直接上代码: var barsAnim = UIImageView(frame: self.view.frame); barsAnim.animationImages = NSArray() ...

  6. 【bzoj3671】[Noi2014]随机数生成器

    优先按照它说明的方法处理数组 然后为了让数列中尽可能多的出现小的数字 所以1是必须要出现的,这样才能使整个数列的排序后字典序最小. 我们思考,如果2也能在这个数列中那就最好不过了 但是2有可能不在这个 ...

  7. html 常用转译空格字符

    本人有时候做表格强迫症,字段有的是3个字有的是4个字,也有两个字的,所有不对齐感觉看着难受, 因此需要用空格来让表头文字对齐,找到了下面几个常用的转译字符. 1.  &160#;不断行的空白( ...

  8. (linux)MMC 卡驱动分析

    最近花时间研究了一下 MMC 卡驱动程序,开始在网上找了很多关于 MMC 卡驱动的分析文章,但大都是在描述各个层,这对于初学者来讲帮助并不大,所以我就打算把自己的理解写下来,希望对大家有用.个人觉得理 ...

  9. react native 知识点总结(一)

    一.关于react native 版本的升级 参照文档:http://reactnative.cn/docs/0.45/upgrading.html react-native -v   查看当前版本 ...

  10. 关于谷歌浏览器默认字体12px的解决方案

    1. * Chrome 中文界面下默认会将小于 12px 的文本强制按照 12px 显示, 可通过加入 CSS 属性 -webkit-text-size-adjust: none; 解决. 超链接访问 ...