class Solution {
public:
bool checkPossibility(vector<int>& nums) {
if (nums.size() == 1) return true;
int size = nums.size();
int count = 0;
for(int i = 0; i < size - 1; i++) {
if (nums[i] > nums[i+1]) {
if (i == 0 || i + 1 == size - 1) {
count++;
} else {
if (nums[i - 1] >= nums[i + 1]) {
nums[i+1] = nums[i];
} else {
nums[i] = nums[i-1];
}
count++;
}
}
if (count > 1) break;
}
return count <= 1 ? true : false;
}
};