166、单调数列

题目描述
如果数组是单调递增或单调递减的,那么它是单调的。

如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的。 如果对于所有 i <= j,A[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

提示:

1 <= A.length <= 50000
-100000 <= A[i] <= 100000

代码:

class Solution {
    public boolean isMonotonic(int[] A) {
     if(A.length == 1 || A.length == 0){
			return true;
		}
		
		//假定默认是递减的
		boolean isminus = true;
        //判断第一个数字和第二个数字是递减还是递增
		int i;
		for (i = 0; i < A.length - 1; i++) {
			int j = A[i];
			if(j > A[i + 1]){
				break;
			}else if (j < A[i + 1]) {
				isminus = false;
				break;
			}else {
				continue;
			}
		}
		if(i == A.length - 1){
			return true;
		}
		for ( ; i < A.length - 1; i++) {
			int j = A[i];
			if(j < A[i + 1] && isminus){
				return false;
				
			}
			if(j > A[i + 1] && !isminus){
				return false;
			}
			
		}
		return true;   
    }
}

我觉得肯定是可以优化的
比如:

class Solution {
    public boolean isMonotonic(int[] A) {
     
		if(A.length == 1 || A.length == 0){
			return true;
		}
		//默认是没有的
		int index = 0;
		//默认是下降的
		boolean isminus = true;
		for (int i = 0; i < A.length - 1; i++) {
			int j = A[i];
			if(index == 0 && j < A[i + 1]){
				isminus = false;
				//已经在前面有了判断
				index = 1;
                    continue;
			}
			if(index == 0 && j > A[i + 1]){
				isminus = true;
				//已经在前面有了判断
				index = 1;
                continue;
			}
			if(isminus && j < A[i + 1]){
				return false;
			}
			if(!isminus && j > A[i + 1]){
				return false;
			}
			
    }
    return true;   }
}

放在一个for循环里面了
性能提高不少了
这效率

但是这个代码还是比较简洁啊,不得不说还是比较厉害,通过计算二者的差来进行判断,厉害厉害

class Solution {
    public boolean isMonotonic(int[] A) {
        int len = A.length;
        if(len == 1) return true;
        int lastDiff = A[1] - A[0];
        for(int i = 2; i < len; i++) {
            int newDiff = A[i] - A[i - 1];
            if(newDiff == 0) continue;
            if(newDiff * lastDiff < 0) return false;
            lastDiff = newDiff;
        }
        
        return true;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_34446716/article/details/85879767