题目描述
如果数组是单调递增或单调递减的,那么它是单调的。
如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的。 如果对于所有 i <= j,A[i]> = A[j],那么数组 A 是单调递减的。
当给定的数组 A 是单调数组时返回 true,否则返回 false。
思路
和证明数列单调相同,先找到一个趋势,再找反例
特殊情况就是相等比较多,或者全部相等。
代码
class Solution {
public boolean isMonotonic(int[] nums) {
int flog = 0;//作为判断的标准
for(int i = 1 ; i< nums.length;i++){//找到第一组增加或者减少
if((nums[i] - nums[i-1])!=0){
flog = nums[i] - nums[i-1];
break;
}
}
if(flog == 0)return true;//说明全部相等,true
else if( flog >= 0 ){//第一组是增,后边有减小 就false
for(int i = 1 ; i <nums.length ; i++){
if((nums[i] - nums[i-1])<0)
return false;
}
}
else{for(int i = 1 ; i <nums.length ; i++){//第一组是减,后边有增加 就false
if((nums[i] - nums[i-1])>0)
return false;
}
}
return true;//符合flog ,true
}
}
优化
反思