C ++のバイナリ循環配列の最大連続1(またはゼロ)
循環配列が与えられます。循環配列は、最初の要素が最後の要素の隣にある場合を考慮した配列です。キューを実装するために使用されます。したがって、最大数を数える必要があります。その配列内の連続する1または0の数。
例を挙げて理解しましょう。
入力 − arr [] ={1,1,0,1,0,1,0,1,1,1}
出力 −最大連続1は5です。または最大連続0は1です。
説明 − Arr []インデックス7から9まで、次にインデックス0と1。1は5です。連続する0はありませんが、1です。
入力 − arr [] ={0,0,0,1,0}
出力 −最大連続1は1です。または、連続する最大0は4です。
説明 − Arr []インデックス4から、インデックス0から3まで。0は4です。
以下のプログラムで使用されているアプローチは次のとおりです
-
0と1をランダムな順序で含む入力Arr[]を取得します。
-
変数Nは、Arr[]のサイズに使用されます。
-
ビットは、1または0を格納するために使用され、それに応じてカウントされます。
-
関数maxConsecutive(int arr []、int n、int bit)は、3つの入力パラメーターを取ります。配列自体、そのサイズ、およびビットとしての0または1。過去のビット数を返します。
-
配列を円形にします。 Temp [2 * n]は、arr[]を2回格納するために使用されます。 While()ループが2回実行され、arr[]がtempにコピーされます。
-
次に、while(temp [k ++] ==bit)を使用して連続する1(または0)をカウントし、連続するカウントを変数「count」に格納します。
-
このカウントがこれまでに見つかった最大数である場合は、maxCに保存します。
-
最終結果としてmaxCを返します。
例
#include <iostream> //to return maximum bishops possible int maxConsecutive(int arr[],int n,int bit){ int count=0; int temp[2*n]={0}; int maxC=0; int j=0,k=0; //to twice copy arr[] while(j<2){ for(int i=0;i<n;i++){ temp[k++]=arr[i]; } j++; } k=0; for(int i=0;i<2*n; i++){ count=0; while(temp[k++]==bit){ ++count; } if(maxC<count) maxC=count; } return maxC; } int main(){ int Arr[]={1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1 }; int N = 12; int bit=1; printf("Maximum Consecutive 1's in circular array: %d",maxConsecutive(Arr,N,bit)); bit=0; printf("\nMaximum Consecutive 0's in circular array: %d",maxConsecutive(Arr,N,bit)); return 0; }
出力
上記のコードを実行すると、次の出力が生成されます-
Maximum Consecutive 1's in circular array: 6 Maximum Consecutive 0's in circular array: 2
-
C++での二分木の最大幅
二分木があるとすると、与えられた木の最大幅を取得する関数を定義する必要があります。ここで、木の幅はすべてのレベルの中で最大の幅です。二分木は完全な二分木と同じ構造であると考えますが、一部のノードはnullです。 1つのレベルの幅は、実際にはエンドノード間の長さです(レベル内の左端と右端の非ヌルノード。エンドノード間のヌルノードも長さの計算にカウントされます)。したがって、ツリーが次のような場合- 最後のレイヤーのノードは[5,3、null、9] であるため、最大幅は4です。 これを解決するには、次の手順に従います- ans:=1、サイズ:=0 (ノード、値)ペアを
-
C++での最大二分木
整数配列があるとします。その配列内のすべての要素は一意です。この配列での最大ツリー構築は、次のように定義されます- ルートは配列内の最大数を保持します。 左側のサブツリーは、サブアレイの左側を最大数で割って構築された最大ツリーです。 右側のサブツリーは、サブアレイの右側を最大数で割って構築された最大ツリーです。 最大の二分木を構築する必要があります。したがって、入力が[3,2,1,6,0,5]の場合、出力は-になります。 これを解決するには、次の手順に従います- Solve()というメソッドを定義します。これにより、リストと左右の値が取得されます。関