665. 非递减数列
分类:数组
如果在i
处出现了”下落“,可以进行的修改有
- 降低前一个数
- 提高这一个数
修改时优先降低前一个数并保持前面序列满足,因为这样不会对数组后面的部分产生影响。同理,只写出提高这一个数,对后续产生了影响的情况。
class Solution {
public:
bool checkPossibility(vector<int>& nums) {
int count = 0;
for(int i=1; i<nums.size(); i++){
if(nums[i-1] > nums[i]){
count+=1;
if(i> 1 && nums[i-2] > nums[i]){ //3 4 2 5
nums[i] = nums[i-1];
}
// 后续遍历已经不会涉及到对nums[i-1]的查看,假装完成了修改
// else{ //1 4 2 3
// nums[i-1] = nums[i];
// }
}
}
return count<2;
}
};
2021/02/07