leetcode665_2-7每日题:非递减数列

class Solution {
    
    
public:
    bool checkPossibility(vector<int>& nums) {
    
    
        if(nums.empty()||nums.size()<=2) return true;
        int num=0;
        bool flag=true;
        for(int i=0;i<nums.size()-1;i++){
    
    
           if(nums[i]>nums[i+1]) {
    
    
              num+=1;
              if(i>0 && nums[i-1]>nums[i+1] && i+2<nums.size() && nums[i]>nums[i+2]){
    
    
                 flag =false;
              }
           }
        }
        return (num<=1) && flag;
    }
};

首先,如果前面大于后面的逆序对大于1个,肯定不行,然后再针对逆序对为1个时,排除掉修改前面和后面两个数均会导致出现新的逆序对的情况即可。

猜你喜欢

转载自blog.csdn.net/SJTU_liangge/article/details/113749020