C++の配列のサイズkのすべてのセグメントにキーが存在するかどうかを確認します
サイズが配列N、互いにキーX、セグメントサイズがKの特定の配列arr1 []に関して、タスクは、キーXがarr1[]のサイズKのすべてのセグメントに存在することを確認することです。
入力
arr1[] = { 4, 6, 3, 5, 10, 4, 2, 8, 4, 12, 13, 4}
X = 4
K = 3 出力
Yes
配列には、サイズKの重複しない4つのセグメント、{4、6、3}、{5、10、4}、{2、8、4}、および{12、13、4}が存在します。 4はすべてのセグメントに存在します。
入力
arr1[] = { 22, 24, 57, 66, 35, 55, 77, 33, 24, 46, 22, 24, 26}
X = 24
K = 5 出力
Yes
入力
arr1[] = { 6, 9, 8, 13, 15, 4, 10}
X = 9
K = 2 出力
No
メソッド
この場合、概念は単純です。サイズKのすべてのセグメントを検討し、Xがウィンドウに存在するかどうかを確認します。したがって、最後のセグメントに注意深く取り組む必要があります。
以下は、上記のアプローチの実装です-
// C++ code to determine the every segment size of
// array have a search key x
#include <bits/stdc++.h>
using namespace std;
bool findxinkindowSize1(int arr1[], int X, int K, int N){
int i;
for (i = 0; i < N; i = i + K) {
// Search X in segment starting
// from index i.
int j;
for (j = 0; j < K; j++)
if (arr1[i + j] == X)
break;
// If loop didn't break
if (j == K)
return false;
}
// If N is a multiple of K
if (i == N)
return true;
// Check in last segment if N
// is not multiple of K.
int j;
for (j=i-K; j<N; j++)
if (arr1[j] == X)
break;
if (j == N)
return false;
return true;
}
// main driver
int main(){
int arr1[] = { 4, 6, 3, 5, 10, 4, 2, 8, 4, 12, 13, 4 };
int X = 4, K = 3;
int N = sizeof(arr1) / sizeof(arr1[0]);
if (findxinkindowSize1(arr1, X, K, N))
cout << "Yes" << endl;
else
cout << "No" << endl;
return 0;
} 出力
Yes
-
C++の配列に存在するキーKの確率
サイズ「n」の配列で与えられ、タスクは、配列で利用可能な場合、与えられた要素kの確率を見つけることです。 配列内の要素の数に等しい「n」まで配列全体をトラバースし、指定された要素またはキー「k」を検索します。要素がその確率を計算するよりも配列に存在する場合は、0を出力します。 入力 arr[] = { 1, 2, 3, 4, 5, 6} K = 5 出力 probability of a key 5 in an array is :0.166 入力 arr[] = { 1,2,3,4,5,6,7 } K = 8 出力 probability of a key 5 in an
-
サイズnの指定された配列がnレベルのBSTを表すことができるかどうかをC++で確認してください
配列Aがあり、配列がnレベルのBSTを表すことができるかどうかを確認する必要があります。レベルがであるため、次のようにツリーを構築できます。数値をkとすると、kより大きい値は右側に移動し、kより小さい値は左側に移動します。 {50、20、9、25、10}と{50、30、20、25、10}の2つのリストがあるとします。 最初のものは無効ですが、2番目のものは有効です。 これを確認するには、BSTを作成して高さを確認するか、配列ベースのアプローチを使用します。アレイベースのアプローチは以下のようなものです- 2つの変数max=infinityを使用して、左側のサブツリーの最大制限をマー