從左向右遍歷,遇到拐點時有兩種處理方法
下移移動拐點處的元素,不會影響後面的判斷,但是要滿足條件。nums[i+1]>nums[i-1]
否則就只能上移後面的元素。注意邊界情況,最後的代碼
class Solution {
public:
bool checkPossibility(vector<int>& nums) {
int count = 0, pre = INT_MIN;
for(int i=0;i<nums.size()-1;i++){
if(nums[i]>nums[i+1]){
count++;
}
if(count>1) {
cout<<i<<endl;
return false;
}
if(count==1){
if(nums[i+1]>=pre){
nums[i] = pre;
}else{
nums[i+1] = nums[i];
}
}
pre = nums[i];
}
return true;
}
};