Non-decreasing Array
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 first 4 to 1 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].
C语言
bool checkNonDes(int* nums, int numsSize, int* i) {
for (int j = 0; j+1 < numsSize; j++) {
if (nums[j] > nums[j+1]) {
*i = j;
return false;
}
}
return true;
}
bool checkPossibility(int* nums, int numsSize){
int i;
if (numsSize < 3)
return true;
if (checkNonDes(nums,numsSize,&i) == false){
if (i < numsSize-2) {
if (nums[i] < nums[i+2]) {
nums[i+1] = nums[i];
if (checkNonDes(nums,numsSize,&i) == false){
return false;
}
} else {
nums[i] = nums[i+1];
if (checkNonDes(nums,numsSize,&i) ==