665. 非递减数列/C++

665. 非递减数列/C++_第1张图片
如果nums[i]>nums[i+1],可以增大nums[i+1],也可以减小nums[i],依据是比较nums[i-1]与nums[i+1]的大小。

bool checkPossibility(vector<int>& nums) {
    if(nums.size()<3)
        return true;
    
    int cnt = 0;
    if(nums[0] > nums[1]){
        nums[0] = nums[1];
        ++cnt;
    }
    
    for(int i=1;i<nums.size()-1;++i){
        int right = nums[i+1];
        if(nums[i]>right){
            ++cnt;
            if(cnt>1)
                return false;
            int left = nums[i-1];
            if(left>right)
                nums[i+1] = nums[i];
            else
                nums[i] = left;
        }
    }
    return true;
}

你可能感兴趣的:(数组,LeetCode/C++)