分析
如果当前数比上一个数小(nums[i]<nums[i-1]),要修改其中一个的值,如果修改次数大于等于2,则直接false
看第i-2个数是否比当前数大,如果大,则把第i-1个数的值赋给当前数。
C++ 代码
class Solution {
public:
int co;
bool checkPossibility(vector<int>& nums) {
int n=nums.size();
if(n==1) return true;
for(int i=1;i<n;i++)
{
if(nums[i]<nums[i-1])
{
co++;
if(co>=2) return false; //修改次数大于等于2
if(i-2>=0 && nums[i-2]>nums[i])
nums[i]=nums[i-1];
}
}
return true;
}
};
不错