665. 非递减数列
给你一个长度为 n 的整数数组 nums ,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列。
我们是这样定义一个非递减数列的: 对于数组中任意的 i (0 <= i <= n-2),总满足 nums[i] <= nums[i + 1]。
答案
class Solution {
public boolean checkPossibility(int[] nums) {
int len = nums.length;
int k = 0;
for (int i = 1; i < len; i++) {
if (nums[i] < nums[i - 1]) {
if (k == 1) {
return false;
}
// 判断i-1的数是否能改
if (i - 2 < 0 || nums[i - 2] <= nums[i]) {
nums[i - 1] = nums[i];
k++;
continue;
}
nums[i] = nums[i - 1];
k++;
}
}
return true;
}
}