665. Non-decreasing Array

Description

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

We define an array is non-decreasing if nums[i] <= nums[i + 1] holds for every i (0-based) such that (0 <= i <= n - 2).

Constraints

  • n == nums.length

  • 1 <= n <= 104

  • -105 <= nums[i] <= 105

Approach

Examples

Input: nums = [4, 2, 3]

Output: true

Explanation: You could modify the first 4 to 1 to get a non-decreasing array.

Solutions

/**
 * Time complexity : 
 * Space complexity : 
 */

class Solution {
    public boolean checkPossibility(int[] nums) {
        if(nums == null || nums.length <= 2) {
            return true;
        }
        int count = 0;
        for(int i = 1; i < nums.length; i++) {
            if(nums[i-1] > nums[i]) {
                count++;
                if(i-2 < 0 || nums[i-2] <= nums[i]) {
                    nums[i-1] = nums[i];
                } else {
                    nums[i] = nums[i-1];
                }
            }
        }
        return count <= 1;
    }
}

Follow up

Last updated

Was this helpful?