665. Non-decreasing Array
Difficulty: Easy
Topics: Array
Similar Questions:
Problem:
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] holds for every i (1
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].
Solutions:
class Solution {
public:
bool checkPossibility(vector<int>& nums) {
if (nums.size() <= 1) return true;
int p = -1;
for (int i = 0; i < nums.size() - 1; ++i) {
if (nums[i] > nums[i+1]) {
if (p != -1) return false;
else {
p = i;
}
}
}
return p == -1 || p == 0 || p == nums.size() - 2 || nums[p-1] <= nums[p+1] || nums[p] <= nums[p+2];
}
};