ধরুন আমাদের কিছু পারমুটেশন A আছে [0, 1, ..., N - 1], যেখানে N হল A এর দৈর্ঘ্য। এখন (গ্লোবাল) ইনভার্সশনের সংখ্যা হল i
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- maxVal :=-1, n :=A এর আকার
- আমি 0 থেকে n – 3
- পরিসরে
- maxVal :=A[i] এবং maxVal এর সর্বোচ্চ
- যদি maxVal> A[i + 2], তাহলে মিথ্যা ফেরত দিন
- সত্যে ফিরে আসুন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
#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)); }
ইনপুট
[1,0,2]
আউটপুট
1