LeetCode 896题;
如果数组是单调递增或单调递减的,那么它是单调的。
如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的。 如果对于所有 i <= j,A[i]> = A[j],那么数组 A 是单调递减的。
当给定的数组 A 是单调数组时返回 true,否则返回 false。
输入:[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
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/monotonic-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
这是一个简单程度的题,原谅菜鸟我自己在那扣了好半天才完事;
先要看一下,这个题就是要分类讨论的事,要么递增成立,要么递减成立;那就好说了,一般想到是遍历一遍,就好了;
先看一下我自己写的代码:
class Solution {
public:
bool isMonotonic(vector<int>& A) {
// int i=0;
// bool dandzeng=false;
// bool danjian=false;
// if(A[0]>A[1])
// danjian=true;
// if(A[0]<A[1])
// dandzeng=true;
// if(dandzeng){
// while(i<A.size()){
// if(A[i]>A[i+1]){
// dandzeng=false;
// return false;
// break;
// }
// }
// i++;
// }
// else if(danjian){
// while(i<A.size()){
// if(A[i]<A[i+1]){
// danjian=false;
// return false;
// break;
// }
// }
// i++;
// }
// return true;
// }
bool iz=true;
bool ij=true;
for(int i=0;i<A.size()-1;i++){
if(A[i]>A[i+1]){
iz= false;
}
if(A[i]<A[i+1]){
ij=false;
}
}
if(iz||ij){
return true;
}
else{
return false;
}
}
};
被注释掉的是最开始写的,其实思路也是正确的,但是超时了,并且其中还有一个隐藏错误,我先不说,看看各位是否可以明确地看出来;
我用的是一次遍历,两个bool,首先假定是递增或递减,然后找反例来推翻,一旦能推翻,就可以结束了。