665. Non-decreasing Array

#### QUESTION:

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].

#### EXPLANATION:

2，3，3，2，4 这个地方需要修改成2，3，3，3，4

1，1，2，4，2这个地方需要修改4成2

1.遍历数组

2.遇到比前面数小的数时，判断前面有几个数比当前数小

3.如果超过两个，那么就将该数修改为前面的数

4.如果只有1个，那么就将前面的数修改为该数

#### SOLUTION:

``````class Solution {
public boolean checkPossibility(int[] nums) {
Stack<Integer> stack = new Stack<>();
int result = 0;
for(int i = 0;i<nums.length;i++){
int tmp = 0;
while (stack.size()!=0 && stack.peek() >nums[i]){
stack.pop();
tmp++;
}
if(tmp>=2){
nums[i] = nums[i-1];
result++;
}else if(tmp==1){
result++;
}
stack.push(nums[i]);
}
return result<2;
}
}
``````
>