Day10 非递减数列

problem describe:
给定一个长度为 n 的整数数组,你的任务是判断在最多改变 1 个元素的情况下,该数组能否变成一个非递减数列。
我们是这样定义一个非递减数列的: 对于数组中所有的 i (1 <= i < n),满足 array[i] <= array[i + 1]。
解法:如果所有的A[i-1]<=A[i],那么肯定是非递减的数列,如果A[i]

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

猜你喜欢

转载自blog.csdn.net/shine10076/article/details/82694328