Giả sử chúng ta có một số hoán vị A của [0, 1, ..., N - 1], trong đó N là độ dài của A. Bây giờ số nghịch đảo (toàn cục) là số i
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- maxVal:=-1, n:=kích thước của A
- cho tôi trong phạm vi từ 0 đến n - 3
- maxVal:=max của A [i] và maxVal
- nếu maxVal> A [i + 2], thì trả về false
- trả về true
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
#include <bits/stdc++.h> using namespace std; class Solution { public: bool isIdealPermutation(vector<int>& A) { int maxVal = -1; int n = A.size(); for(int i = 0; i < n - 2; i++){ maxVal = max(A[i], maxVal); if(maxVal > A[i + 2]) return false; } return true; } }; main(){ vector<int> v = {1,0,2}; Solution ob; cout << (ob.isIdealPermutation(v)); }
Đầu vào
[1,0,2]
Đầu ra
1