Leetcode 665. Non-decreasing Array
1 min readMay 4, 2021
[medium]
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
).
Example 1:
Input: nums = [4,2,3]
Output: true
Explanation: You could modify the first 4 to 1 to get a non-decreasing array.
Example 2:
Input: nums = [4,2,1]
Output: false
Explanation: You can't get a non-decreasing array by modify at most one element.
Constraints:
n == nums.length
1 <= n <= 104
-105 <= nums[i] <= 105
[Think]
- find what kind of situation we will have
- num[i] < num[i-1] → will need to change nums[i]
- There are two scenario, first change num[i] to num[i-1]; or num[i-1] to num[i]
- best way is change to small one, but have to check if i-2 smaller or equal to i, then need to changeit to large num[i]
[Note]
- Trick part is once number[i] ≥ nums[i-2]