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].
实现思路:找到导致非递减的异常点,尝试改变这个点的位置来让其变成非递减,很明显如果有两个异常点,那么必然不可以。
class Solution {
public boolean checkPossibility(int[] nums) {
int n, count = 0;
n = nums.length;
for(int i = 1; i < n && count < 2; i++)
{
if(nums[i] >= nums[i-1]) continue;
if(i-2>=0 && nums[i] < nums[i-2])
nums[i] = nums[i-1];
else
nums[i-1] = nums[i];
count++;
}
return count<=1?true:false;
}
}