LeetCode.896-单调数组(Monotonic Array)
这是悦乐书的第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 第四种解法
也可以借助包装类Integer的compare方法,比较相邻两个元素的大小,另外使用一个变量存储上一次比较的结果,每次做完新的比较后,用新的结果和前一次的结果比较,只要前后两次比较结果不同,可以直接返回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)的更多相关文章
- LeetCode 896. 单调数列(Monotonic Array)
896. 单调数列 896. Monotonic Array 题目描述 如果数组是单调递增或单调递减的,那么它是单调的. 如果对于所有 i<=j,A[i]<=A[j],那么数组 A 是单调 ...
- [Swift]LeetCode896. 单调数列 | Monotonic Array
An array is monotonic if it is either monotone increasing or monotone decreasing. An array A is mono ...
- LeetCode 189. 旋转数组(Rotate Array)
189. 旋转数组 LeetCode189. Rotate Array 题目描述 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数. 示例 1: 输入: [1,2,3,4,5,6, ...
- [LeetCode] 896. Monotonic Array 单调数组
An array is monotonic if it is either monotone increasing or monotone decreasing. An array A is mono ...
- 896. Monotonic Array@python
An array is monotonic if it is either monotone increasing or monotone decreasing. An array A is mono ...
- C#LeetCode刷题之#896-单调数列(Monotonic Array)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3760 访问. 如果数组是单调递增或单调递减的,那么它是单调的. ...
- 【LeetCode题解】数组Array
1. 数组 直观地看,数组(Array)为一个二元组<index, value>的集合--对于每一个index,都有一个value与之对应.C语言中,以"连续的存储单元" ...
- 【Leetcode_easy】896. Monotonic Array
problem 896. Monotonic Array solution1: class Solution { public: bool isMonotonic(vector<int>& ...
- Leetcode896.Monotonic Array单调数列
如果数组是单调递增或单调递减的,那么它是单调的. 如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的. 如果对于所有 i <= j,A[i]> = ...
随机推荐
- 【转载】C#相等性比较
本文阐述C#中相等性比较,其中主要集中在下面两个方面 ==和!=运算符,什么时候它们可以用于相等性比较,什么时候它们不适用,如果不使用,那么它们的替代方式是什么? 什么时候,需要自定一个类型的相等性比 ...
- 【转载】.NET 框架浅析
经过了对C#较长时间的学习以及实践,不断地感受着.NET 框架--这个最本质,然而却似乎让人捉摸不透的概念.特别是经过拜读Anytao博主的<你必须知道的.NET>文章,使我对其概念关系得 ...
- Webservice WCF WebApi 前端数据可视化 前端数据可视化 C# asp.net PhoneGap html5 C# Where 网站分布式开发简介 EntityFramework Core依赖注入上下文方式不同造成内存泄漏了解一下? SQL Server之深入理解STUFF 你必须知道的EntityFramework 6.x和EntityFramework Cor
Webservice WCF WebApi 注明:改编加组合 在.net平台下,有大量的技术让你创建一个HTTP服务,像Web Service,WCF,现在又出了Web API.在.net平台下, ...
- Struts2实现空表单信息的提示
须要的jar包文件: index.jsp源代码: <%@ page language="java" contentType="text/html; charset= ...
- android-auto-scroll-view-pager
https://github.com/eltld/android-auto-scroll-view-pager
- 多线程-----Thread类与Runnable接口的区别
第一个继承Thread类来实现多线程,其实是相当于拿出三件事即三个卖早餐10份的任务分别分给三个窗口,他们各做各的事各卖各的早餐各完成各的任务,因为MyThread继承Thread类,所以在newMy ...
- Snail—iOS网络学习之得到网络上的数据
在开发项目project中,尤其是手机APP,一般都是先把界面给搭建出来.然后再从网上down数据 来填充 那么网上的数据是怎么得来的呢,网络上的数据无非就经常使用的两种JSON和XML 如今 大部分 ...
- Qt & opencv 学习(二)
例子:打开图片并显示.打开图片利用Qt的标准文件对话框,第一步是利用OpenCV创建窗口并显示. 添加一个Button,转到信号槽添加代码: using namespace cv; Mat image ...
- Mac开发必备工具(三)—— Fish shell
Fish shell 简介 fish 可以根据输入自动匹配历史命令.它的一大特点是开箱即用,没有zsh那些繁琐的配置.官网:http://www.fishshell.com/. 安装与配置 在终端里使 ...
- html5--6-59 其他常用CSS属性
html5--6-59 其他常用CSS属性 实例 学习要点 了解opacity属性:透明度设定 了解cursor属性:自定义鼠标样式 了解CSS新单位rem和em的区别 了解轮廓outline的设置 ...