leetcode 775. 全局倒置与局部倒置

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/L1558198727/article/details/89011229
易知:size<=2 的时候是成立的
我们一个一个的加入之前的集合,当加到第i个的时候
有两种情况 产生响邻的下降和不产生相邻位置的下降
	产生:同时产生了一个全局的下降,则不能再产生全局下降
	不产生:不能再产生全局下降
两种情况合并一下 就是加入第i个数的时候不能比前i-2个数里面的最大值小否则加入失败返回false
遍历结束返回true
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
#define debug(x) cout<<#x<<": "<<x<<endl;

class Solution {
public:

    bool isIdealPermutation(vector<int>& A) {
        int max1;
        if(A.size()<=2){
            return true;
        }
        max1 = A[0];
        for(int i=2;i<A.size();i++){

            if(A[i]>max1){
                max1 = max(max1,A[i-1]);
            }else{
                return false;
            }

        }
        return true;
    }
};

int main()
{
    Solution Solution1;
    vector<int>aa = {0,2,1};
    cout<<Solution1.isIdealPermutation(aa)<<endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/L1558198727/article/details/89011229