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 };

 

posted @ 2017-10-11 11:24  __Meng  阅读(216)  评论(0编辑  收藏  举报