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.
Note: The n
belongs to [1, 10,000].
能否最多改变一个元素,使得数组为非降序数组
考虑 3 4 2 3 这种情况
C++(52ms):
1 class Solution { 2 public: 3 bool checkPossibility(vector<int>& nums) { 4 int len = nums.size(); 5 int cnt = 0 ; 6 int prev = nums[0] ; 7 for (int i = 1 ; i < len && cnt <= 1 ; i++){ 8 if (nums[i] < prev) 9 cnt++ ; 10 if (nums[i] < prev && i-2>=0 && nums[i-2] > nums[i]) 11 continue ; 12 prev = nums[i] ; 13 } 14 return cnt<=1 ; 15 } 16 };