给你一个长度为 n
的整数数组,请你判断在 最多 改变 1
个元素的情况下,该数组能否变成一个非递减数列。
输入: nums = [4,2,3] 输出: true 解释: 你可以通过把第一个4变成1来使得它成为一个非递减数列。
输入: nums = [4,2,1] 输出: false 解释: 你不能在只改变一个元素的情况下将其变为非递减数列。
function checkPossibility(nums){
if(nums.length==1){
return true;
}
for(var i=0; i<nums.length; i++){
if(nums[i]>nums[i+1]){
if(nums[i-1]==nums[i]){
nums[i+1]=nums[i];
}else{
if(nums[i-1]>nums[i+1]){
nums[i+1]=nums[i];
} else{
nums[i]=nums[i+1];
}
}
for(var j=0; j<nums.length; j++){
if(nums[j]>nums[j+1]){
return false;
}else if (j==nums.length-2){
return true;
}
}
}else if (i==nums.length-2){
return true;
}
}
}