> Problem: [665. 非递减数列]
[TOC]
# 思路
> 这个题确实不简单,这个题看似很简单,但是如果没动脑筋确实不能通过全部测试用例
# 解题方法
> 怎么说呢,每次遍历,看其中连续的三个数字,从左到右记为x.y,z
第一种情况 y>z,z>=x 则令y = x
第二种情况y>z,z<x 则令z = y
第三种情况 x > y , y <= z 则令 x = y;
就这三种情况进行编写程序,需要多次在纸上模拟多种情况才能进行解答
# 复杂度
- 时间复杂度:
> 添加时间复杂度, 示例: $O(n)$
- 空间复杂度:
> 添加空间复杂度, 示例: $O(n)$
# Code
```Java []
class Solution {
public boolean checkPossibility(int[] nums) {
if (nums.length == 0 || nums.length == 1)
return true;
int count = 0;
for (int i = 1; i < nums.length-1; i++) {
if (count > 1){
break;
}
if (nums[i] > nums[i+1]){
if (nums[i+1] >= nums[i-1]){
nums[i] = nums[i-1];
count++;
}else{
nums[i+1] = nums[i];
count++;
}
}
if (nums[i-1]>nums[i] && nums[i] <= nums[i+1]){
nums[i-1] = nums[i];
count++;
}
}
return count <=1;
}
}
```