สมมติว่าเรามีการเรียงสับเปลี่ยน A ของ [0, 1, ..., N - 1] โดยที่ N คือความยาวของ A ตอนนี้จำนวนการผกผัน (ทั่วโลก) คือจำนวน i
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- maxVal :=-1, n :=ขนาดของ A
- สำหรับ i ในช่วง 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