C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++でのグローバルおよびローカルの反転


[0、1、...、N --1]の順列Aがあるとします。ここで、NはAの長さです。ここで、(グローバル)反転の数はi A[j]。また、ローカル反転の数は、0 <=iA [i+1]のiの数です。グローバル反転の数がローカル反転の数と等しい場合にのみ、trueを返す必要があります。したがって、入力が[1,0,2]の場合、ローカル反転とグローバル反転が1つしかないため、trueを返します。

これを解決するには、次の手順に従います-

  • maxVal:=-1、n:=Aのサイズ
  • 0からn–3の範囲のiの場合
    • maxVal:=A[i]とmaxValの最大値
    • maxVal> A [i + 2]の場合、falseを返します
  • trueを返す

理解を深めるために、次の実装を見てみましょう-

#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

  1. Javaのグローバル変数とローカル変数

    ローカル変数は、メソッド、コンストラクター、またはブロックで宣言されます。これらは、メソッド、コンストラクター、またはブロックが入力されたときに作成され、変数がメソッド、コンストラクター、またはブロックを終了すると破棄されます。 アクセス修飾子はローカル変数には使用できません。ローカル変数は、宣言されたメソッド、コンストラクター、またはブロック内でのみ表示されます。これらの変数は、内部でスタックレベルで実装されます。ここで、ローカル変数の例を見てみましょう- 例 public class Demo {    public void Rank() {   &nbs

  2. Pythonでグローバル反転とローカル反転の数が同じかどうかを確認するプログラム

    nums[j]のようなインデックスi nums [i+1]のようなインデックスiとi+1がある場合です。グローバル反転の数がローカル反転の数と等しいかどうかを確認する必要があります。 したがって、入力がnums =[3、2、4]のような場合、インデックス0と1は両方ともグローバルとローカルの反転であるため、出力はTrueになります。 これを解決するには、次の手順に従います- l:=numsのサイズ 0〜l-3の範囲のiの場合、do i + 2からl-1の範囲のjについては、 nums [j]の場合、 Falseを返す Trueを返す 理解を深めるために、次の実装