一、题目
演示示例:
二、测试代码
//两次遍历
class Solution {
public boolean isMonotonic(int[] A) {
boolean flag=false;//判断是否为单调数列的标志位
if(A[0]<=A[A.length-1]){//若数列为递增数列
for(int i=0;i<A.length-1;++i){
if(A[i]>A[i+1]){//出现前一个数比后一个数大的异常情况即不为单调递增数列
return flag;
}
}
flag=true;
}
if(A[0]>=A[A.length-1]){//若数列为递减数列
for(int i=0;i<A.length-1;++i){
if(A[i]<A[i+1]){//出现前一个数比后一个数小的异常情况即不为单调递减数列
return flag;
}
}
flag=true;
}
return flag;
}
}
三、运行情况
四、刷题总结
本题的主要思路为我们根据数组头尾数字判断是递增还是递减,然后再根据是递增或递减,遍历数组,判断相邻两个数字是否满足单调性要求,若有一组不满足则直接返回false,遍历完成即可返回true。时间复杂度为O ( N ) ,空间复杂度为O ( 1 ) 。