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].
思路:
1,遍历一遍,把每个数换成相邻的 数,再检查这个数列是不是递减的数组
#pragma once
#include<iostream>
#include<vector>
using namespace std;
class Solution {
public:
bool checkPossibility(vector<int>& nums) {
//如果小于等于2位数则肯定可以
if (nums.size() <= 2)
{
return true;
}
int t = 0;
for (int i = 0; i < nums.size() ; i++)
{
vector <int> temp = nums;
//每次循环时把当前的数替换为相邻的数
if (i == nums.size()-1)
{
temp[i] = temp[i - 1];
}
else if(i==0){
temp[i] = nums[i + 1];
}
//检查替换后的数组是不是递减的
for (int j = 0; j < temp.size() - 1; j++)
{
if (temp[j] > temp[j + 1])
{
t++;
}
}
if (t == 0)
{
return true;
}
t = 0;
}
return false;
}
};