665. Non-decreasing Array

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] <= array[i + 1] holds for every i (1 <= i < n).

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.

解题要点:

从i = 1开始,如若当前数大于等于前一位数(符合递增规则)直接进入下一位数。如当前数i >= 2 且小于前前位数,则赋当前值为前一位数;反之,赋前一位值为当前值。

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

Last updated

Was this helpful?