输入: nums = [4,2,3]
输出: true
解释: 你可以通过把第一个 4 变成 1 来使得它成为一个非递减数列。
题解
捏吗第一次看着题,直接比较一下不就行了吗??自信满满写出代码,发现直接WA,裂开了
不通过的案例是 【3 4 2 3】,发现确实只比较是不可取的,所以在比较完之后额外增加一个判断,把非递减的改成递减的,然后再比较后面的
class Solution {
public:
bool checkPossibility(vector<int>& nums) {
int count = 0;
int size = nums.size();
for(int i =1; i < size ; i++){
if(nums[i] < nums[i - 1]){
if(i == 1 || nums[i] >= nums[i -2])
nums[i - 1] = nums[i];
else
nums[i] = nums[i - 1];
count++;
if(count > 1)
return false;
}
}
return count<=1;
}
};