665. Non-decreasing Array

  • Difficulty: Easy

  • Topics: Array

  • Similar Questions:

Problem:

Given an array with n integers, your task is to check if it could become non-decreasing by modifying at most 1 element.

We define an array is non-decreasing if array[i] holds for every i (1 Example 1: Input: [4,2,3] Output: True Explanation: You could modify the first 4 to 1 to get a non-decreasing array. Example 2: Input: [4,2,1] Output: False Explanation: You can't get a non-decreasing array by modify at most one element. Note: The n belongs to [1, 10,000].

Solutions:

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

        return p == -1 || p == 0 || p == nums.size() - 2 || nums[p-1] <= nums[p+1] || nums[p] <= nums[p+2];

    }
};

results matching ""

    No results matching ""