首页 > 其他 > 详细

LeetCode-896 单调数列

时间:2019-04-17 21:48:25      阅读:111      评论:0      收藏:0      [点我收藏+]

如果数组是单调递增或单调递减的,那么它是单调的

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

当给定的数组 A 是单调数组时返回 true,否则返回 false

示例 1:

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

示例 2:

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

示例 3:

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

示例 4:

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

示例 5:

输入:[1,1,1]
输出:true

class Solution {
    public boolean isMonotonic(int[] A) {
        int len=A.length;
        if(len<=1) return true;
        
        
        boolean increase=true;
        boolean decrease=true;
        
    //第一次遍历,判断是否单调增
        for (int i = 1; i <len; i++) {
            if(A[i]-A[i-1]<0){
                increase=false;
          break;
            }
        }
        
    //第二次遍历,判断是否单调减  
        for (int i = 1; i <len; i++) {
            if(A[i]-A[i-1]>0){
                decrease=false;
          break;
            }
        }

        if(increase||decrease){
            return true;
        }
        
        return  false;
    }
}

 

想法当然也很简单,两次遍历,第一遍判断是否单调增,第二次遍历,判断是否单调减。

那么一次遍历,应该怎么做呢?
Java有一个compareable接口。其中< = > 分别对应-1,0,1。
class Solution {
    public boolean isMonotonic(int[] A) {
        int store = 0;
        for (int i = 0; i < A.length - 1; ++i) {
           //比较当前值和后一个值得大小关系
            int c = Integer.compare(A[i], A[i+1]);
            if (c != 0) {
               //如不符合,就不是单调
                if (c != store && store != 0)
                    return false;
                store = c;
            }
        }

        return true;
    }
}        

 

 

 


LeetCode-896 单调数列

原文:https://www.cnblogs.com/coscx/p/10726222.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!