自己的思路:原本想着非递减数列只要数组最后一位是最小的,前面的数只要有两个比最后一位小,就无法变成非递减数列了。所以写下一段错误代码:
public boolean solution(int[] nums) {int x=0 ;for(int i=0;i<nums.length;i++){if(nums[nums.length-1]<=nums[i]){x++;if(x>1){return false;}}}return true;}
正确的思路:
就直接写注释了
class Solution {public boolean checkPossibility(int[] nums) {int n = nums.length, cnt = 0;for (int i = 0; i < n - 1; ++i) {int x = nums[i], y = nums[i + 1];if (x > y) {cnt++;if (cnt > 1) {return false;}if (i > 0 && y < nums[i - 1]) {nums[i + 1] = x;}}}return true;}}



