Given an array with n
integers, your task is to check if it could become non-decreasing by modifying at most 1
element.
We define an array is non-decreasing if array[i] <= array[i + 1]
holds for every i
(1 <= i < n).
Example 1:
Input: [4,2,3] Output: True Explanation: You could modify the first4
to1
to get a non-decreasing array.
Example 2:
Input: [4,2,1] Output: False Explanation: You can't get a non-decreasing array by modify at most one element.
Note: The n
belongs to [1, 10,000].
题意:
给出一个数组,是否最多更改数组里的一个数,使得这个数组非递减。
思路:
遍历数组,如果nums[i]>nums[i+1]的话,如果i=0,那么就让nums[i]=nums[i+1],否则如果nums[i]>nums[i+1]>nums[i-1]的话,就让nums[i]=nums[i+1],如果nums[i-1]>nums[i]>nums[i+1],就让nums[i+1]=nums[i],每次更改计数器加一,大于2就return false。最后return true。
代码:
class Solution {
public boolean checkPossibility(int[] nums) {
int ans=0;
for(int i=0;i+1<nums.length;i++)
{
if(nums[i]>nums[i+1])
{
if(i==0)
nums[i]=nums[i+1];
else if(nums[i+1]>nums[i-1])
{
nums[i]=nums[i+1];
}
else
{
nums[i+1]=nums[i];
}
ans++;
}
if(ans>1)
return false;
}
return true;
}
}