要求:请你判断在最多改变 1 个元素的情况下,该数组能否变成一个非递减数列
思路:nums[i]>nums[i+1]时,根据贪心先改前面的使得尽可能小,但是有一种情况当nums[i-1]>nums[i+1]时只能改后面的
class Solution {
public:
bool checkPossibility(vector<int>& nums) {
int n=nums.size();
int cnt=0;
bool res=true;
for(int i=1;i<n;++i){
if(nums[i-1]>nums[i]){
++cnt;
if(i>=2&&nums[i-2]>nums[i])nums[i]=nums[i-1];
else nums[i-1]=nums[i];
}
}
return cnt<2;;
}
};