这个题很简单,就是让判断一个数组能否只修改一次就变成一个非递减数组,我写的很简单,就记录下需要操作的次数,然后根据操作次数返回结果,主要就是你操作的时候要保证本次操作的正确性
public static boolean checkPossibility(int[] nums) {
if (nums == null || nums.length < 3) {
return true;
}
int cnt = 0;
for (int i = 1; i < nums.length && cnt < 2; i++) {
if (nums[i-1] <= nums[i]) {
continue;
}
cnt++;
if(cnt>1)return false;
//修改时的决策,保证本次操作最佳,即本次操作后对下一个数的影响最小,i-2,i-1,i;i>i-2,则将i的值赋值给i-1;i-2>i,则将i-1的值赋值给i;
if (i-2>=0 && nums[i-2] > nums[i]) {
nums[i] = nums[i-1];
}else {
nums[i-1] = nums[i];
}
}
return true;
}