当 nums[i-1] > nums[i] 时,是把 nums[i-1]降为nums[i] 还是 把nums[i-1]升为nums[i]?
3 5 4 6 --> 3 4 4 6
i-2 i-1 i
4 5 3 6 --> 4 5 5 6
比较nums[i-2] 和 nums[i]的关系,如果nums[i-2] > nums[i],则nums[i ] = nums[i-1];
bool checkPossibility(vector<int>& nums)
{
int cnt = 0; //the number of changes
for (int i = 1; i < nums.size() && cnt <= 1; i++)
{
if (nums[i - 1] > nums[i])
{
cnt++;
if (i - 2<0 || nums[i - 2] <= nums[i])
nums[i - 1] = nums[i]; //modify nums[i-1] of a priority
else
nums[i] = nums[i - 1]; //have to modify nums[i]
}
}
return cnt <= 1;
}