求:
如果数组是单调递增或单调递减的,那么它是单调的。
如果对于所有 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] <= 10000
解:
严格按照题目的定义判断单调性即可,如果数组中所有元素都相等,根据题目的意思也应该返回true。如果数组中出现了第一对不相等的元素,后续的所有元素应该与他们维持相同的大小关系,否则返回false。
public booleanisMonotonic(int[] A) {
if(A == null|| A.length<= 2) return true;inti = 0,j = 1;while(j < A.length&& A[i] == A[j]) ++j;if(j == A.length) return true;else if(A[j] > A[i]) {
for(intk = j + 1;k < A.length;k++) {
if(A[k] < A[k-1]) return false;}
} else{
for(intk = j + 1;k < A.length;k++) {
if(A[k] > A[k-1]) return false;}
}
return true;}