bool checkPossibility(int* arr, int len){
int i, j, flag = 0;
bool ret = true;
/* i 从前往后,一直到不合格的break*/
for(i=0; i<len-1; ++i){
if(arr[i] > arr[i+1])
break;
}
/* j 从后往前,一直到不合格的break*/
for(j=len-1; j>=1; j--){
if(arr[j] < arr[j-1]){
break;
}
}
/* 如果i或者j到头了,并且i,j都走动了,则证明只有开头,或者结尾一个元素不合格 */
if((i==0 || j==len-1) && i>=j-1)
return true;
return i>j-1 || /* 所有元素合格 */
(i==j-1 && (arr[j]>=arr[i-1] || arr[i]<=arr[j+1])) ;/* i和j相遇,则需要j位置元素>=i-1元素, 或者
i位置元素>=j+1元素;*/
}
leetcode-665-非递减数列-C语言
最新推荐文章于 2022-08-07 21:38:02 发布