Leetcode 665. 非遞減數列 (比較噁心的模擬貪心題)

 

從左向右遍歷,遇到拐點時有兩種處理方法

 

 

下移移動拐點處的元素,不會影響後面的判斷,但是要滿足條件。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;
    }
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章