Question
665.?Non-decreasing Array
Solution
題目大意:
思路:當前判斷2的時候可以將當前元素2變為4,也可以將上一個元素4變為2,再判斷兩變化后是否滿足要求。
Java實現:
public boolean checkPossibility(int[] nums) {if (nums == null || nums.length < 3) return true;int count = 0;// 判斷前2個if (nums[1] < nums[0]) {nums[0] = nums[1] - 1;count++;}for (int i = 2; i < nums.length; i++) {if (nums[i] < nums[i - 1]) {count++;if (nums[i - 2] <= nums[i] - 1) {nums[i - 1] = nums[i] - 1;} else if (i == nums.length -1 || nums[i + 1] >= nums[i - 1] + 1) {nums[i] = nums[i - 1] + 1;} else {return false;}}}return count < 2;
}
別人實現:
public boolean checkPossibility(int[] nums) {int cnt = 0; //the number of changesfor(int i = 1; i < nums.length && cnt<=1 ; i++){if(nums[i-1] > nums[i]){cnt++;//modify nums[i-1] of a priorityif(i-2<0 || nums[i-2] <= nums[i])nums[i-1] = nums[i];else nums[i] = nums[i-1]; //have to modify nums[i]}}return cnt<=1;
}