Given an array with n
integers, your task is to check if it could become non-decreasing by modifying at most 1
element.
We define an array is non-decreasing if array[i] <= array[i + 1]
holds for every i
(1 <= i < n).
Example 1:
Input: [4,2,3] Output: True Explanation: You could modify the first4
to1
to get a non-decreasing array.
Example 2:
Input: [4,2,1] Output: False Explanation: You can't get a non-decreasing array by modify at most one element.
Note: The n
belongs to [1, 10,000].
bool checkPossibility(int* nums, int numsSize) {
if(numsSize==1)
return true;
int i,j,k=0;
for(i=0;i<numsSize-1;i++)
{
if(nums[i]>nums[i+1])
{
k++;
if(i==0)
continue;
if(nums[i-1]>nums[i+1])
nums[i+1]=nums[i];
else
nums[i]=nums[i-1];
if(k==2)
return false;
}
}
return true;
}