uacs2024

导航

leetcode 1909. 删除一个元素使数组严格递增

1909. 删除一个元素使数组严格递增

题解的做法都太复杂了,我的可能好理解一些

class Solution {
public:
    bool canBeIncreasing(vector<int>& nums) {
        int size = nums.size();
        if(size == 2)  return true;
        bool isDown = false;//isDown表示是否出现过一次nums[i-1] >= nums[i]的下降
        if(nums[0] >= nums[1])  isDown = true;
        //考虑几种特殊情况,比如8 9 1 2;  1 2 0 3 4;  1 2 9 3 4
        for(int i = 2;i < size-1;i++){
            if(nums[i-1] >= nums[i]){
                if(isDown == true)  return false;//如果出现了两次下降,说明删除一个元素无法保证严格单增
                if(nums[i-2] >= nums[i] && nums[i-1] >= nums[i+1])  return false;//前面防类似8 9 1 2,后面防1 2 0 3 4
                isDown = true;
            }
        }
        if(nums[size-2] >= nums[size-1] && isDown == true)  return false;
        return true;  
    }
};

 

posted on 2024-11-30 11:40  ᶜʸᵃⁿ  阅读(28)  评论(0)    收藏  举报