Non-decreasing Array (Easy Google)
Input: [4,2,3]
Output: True
Explanation: You could modify the first 4 to 1 to get a non-decreasing array.Input: [4,2,1]
Output: False
Explanation: You can't get a non-decreasing array by modify at most one element.Basic Idea:
class Solution { public: bool checkPossibility(vector<int>& nums) { if (nums.empty() || nums.size() < 3) return true; int encountered = false; for (int i = 0; i < nums.size() - 1; ++i) { if (nums[i] > nums[i + 1]) { if (i == 0 || i == nums.size() - 2 || nums[i] <= nums[i + 2] || nums[i - 1] <= nums[i + 1]) { if (encountered) return false; else encountered = true; } else { return false; } } } return true; } };class Solution { public boolean checkPossibility(int[] nums) { boolean breaked = false; for (int i = 0; i < nums.length - 1; ++i) { if (nums[i] > nums[i + 1]) { if (i == 0 || i == nums.length - 2 || nums[i + 2] >= nums[i] || nums[i - 1] <= nums[i + 1]) { if (breaked) return false; else breaked = true; } else { return false; } } } return true; } }