题目:
给定一个长度为 n 的整数数组,你的任务是判断在最多改变 1 个元素的情况下,该数 组能否变成一个非递减数列。
我们是这样定义一个非递减数列的: 对于数组中所有的 i (1 <= i < n),满足 array[i] <= array[i + 1]
public boolean checkPossibility(int[] nums) {
if (nums.length<=2){
return true;
}
//初始化改变的次数;
int count=0;
if (nums[0]>nums[1]) {
count++;
nums[0]=nums[1];
}
//便历比较右边的比左边的小于的次数;
for(int i=1;i<nums.length-1;i++){
if(nums[i]>nums[i+1]){
count++;
if(count>1){
return false;
}
if (nums[i-1]>nums[i+1]){
nums[i+1] = nums[i];
}else {
nums[i] = nums[i-1];
}
}
}
return true;
}