-
無向グラフにC++で指定されたサイズの独立集合が含まれているかどうかを確認します
コンセプト 与えられた無向グラフに関して、サイズlの独立集合が含まれているかどうかを確認します。サイズlの独立集合が存在する場合は「はい」と印刷し、そうでない場合は「いいえ」と印刷します。グラフの独立集合は、互いに直接接続されていない頂点の集合として定義されることに注意してください。 入力 L = 4, graph = [[1, 0, 1, 0, 0], [0, 1, 1, 0, 0],[1, 1, 1, 1, 1], [0, 0, 1, 1, 0],[0, 0, 1, 0, 1]]; 出力 Yes 上のグラフには、サイズ4の独立したセットが含まれています(頂点0、1、3、4は互いに
-
与えられた二分木の垂直レベルがC++でソートされているかどうかを調べます
コンセプト 特定の二分木に関して、私たちのタスクは、二分木の特定の垂直レベルがソートされているかどうかを判断することです。 (この場合、2つのノードがオーバーラップしているときは、それらが存在するレベルでソートされたシーケンスを形成しているかどうかを確認してください。) 入力 2 / \ 3 6 / \ 8 5 / 7 Level l = -1 出力 Yes 7であり、ソートされたシーケンスを形成します。 入力 2 / \ 3 7 \ / 4 5 Level l = 0 出力 Yes 値4と5のノードがバイナリツリーで重複していることに注意してください。 5であり、ソートさ
-
C++で指定された範囲のコストと数量から比率を取得できるかどうかを確認します
コンセプト lowCostからupCostまでのコストの特定の範囲、およびlowQuantからupQuantまでの数量の範囲に関して、r=コスト/数量およびlowCost<=コスト<=upCostおよびlowQuant<である特定の比率rを取得できるかどうかを判断します。 =数量<=upQuant。 入力 lowCost = 2, upCost = 10, lowQuant = 3, upQuant = 9 r = 3 出力 Yes 説明 ここで、コスト=r*数量=3* 3 =9ここで、コストは[1、10]で、数量は[2、8]です。 入力 lowCost = 15, upCost = 31
-
カップと棚のすっきりとした配置がC++で作成できるかどうかを確認します
コンセプト 与えられた3種類のカップ(p [])と受け皿(q [])、およびm個の棚について、カップと棚をきちんと配置できるかどうかを判断します。 これで、次のルールに従えば、カップとソーサーの配置がきれいになります- 最初のルールによると、どの棚にもカップとソーサーの両方を入れることはできません。 2番目のルールによると、どの棚にも5杯までしか入れることができません。 3番目のルールによると、どの棚にも10個以下の受け皿を置くことができます。 入力 p[] = {4, 3, 7} q[] = {5, 9, 10} m = 11 出力 Yes 説明 合計カップ=14、必要な棚=3
-
C++のソースからkを超える長さのパスがあるかどうかを確認します
コンセプト 与えられたグラフ、グラフ内のソース頂点、および数値k(ここでkは、ソース頂点と宛先頂点の間のグラフのパス長を示します)に関して、私たちのタスクは、開始する単純なパス(サイクルなし)があるかどうかを判断することです。指定されたソースから、他の頂点(つまり宛先)で終了します。グラフを以下に示します- 入力 Source s = 0, k = 64 出力 True 4があり、合計距離は68 kmで、64を超えています。 入力 Source s = 0, k = 70 出力 False 8)であるため、69を超える入力の場合は出力がfalseになります。 メソッド 重要なこ
-
C++でゼロに追加されるバランスBSTにトリプレットがあるかどうかを確認します
平衡二分探索木があるとすると、is_valid_triplet()という名前の関数を作成する必要があります。この関数は、指定されたBSTに合計が0に等しいトリプレットが存在する場合はtrueを返し、そうでない場合はfalseを返します。 。これらの制約に従ってメソッドを設計します- 予想される時間計算量はO(n ^ 2) O(logn)余分なスペースを使用できます。 つまり、入力が次のような場合 トリプレットは[-15,7,8]であるため、出力はTrueになります。 これを解決するには、次の手順に従います- 関数bst_to_doubli_list()を定義しま
-
C ++で連結したときに回文を形成するまで、S1の接頭辞とS2の接尾辞が続くようなインデックスiを見つけます。
コンセプト 与えられた等しい長さの2つの文字列S1とS2に関して、私たちのタスクは、S1[0…i]とS2[i+1…n-1]が連結されたときに回文を与えるようなインデックスiを決定することです。そのようなインデックスを決定できない場合は、-1を出力することがわかっています。 入力 S1 = “pqrsu”, S2 = “wxyqp” 出力 1 S1 [0..1] =“ pq”、S2 [2..n-1] =“ ypq” S1 + S2 =“ pqyqp”は、回文であることを示します。 入力 S1 = “pqrst”, S
-
バイナリ配列で1の最長の連続シーケンスを取得するために1に置き換えられる0のインデックスを検索します-C++のSet-2
コンセプト 与えられた0と1の配列に関して、1に置き換えられる0の位置を決定して、1の最大連続シーケンスを取得します。この場合、予想される時間計算量はO(n)であり、補助空間はO(1)です。 入力 arr[] = {1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1} 出力 Index 10 配列インデックスを0から開始し、0を1に置き換えます インデックス10は、1の最長の連続シーケンスを引き起こします。 入力 arr[] = {1, 1, 1, 1, 1, 0} 出力 Index 5 メソッド ゼロの両側で1のカウントを使用する- ここでの概念は、各ゼロの
-
C++で指定されたチケットのリストから旅程を検索します
[from、to]のような出発空港と到着空港のペアで表されるチケットのリストがあるとすると、旅程を順番に見つける必要があります。チケットはすべてチェンナイを出発する男性のものです。したがって、旅程はチェンナイで始まる必要があります。 したがって、入力が[[Mumbai、 Kolkata]、[Chennai、 Mumbai]、[Delhi、 Bangalore]、[Kolkata、 Delhi]]の場合、出力は[Chennai、 Mumbai、 Kolkata、 Delhi、Bangalore]になります。 これを解決するには、次の手順に従います- 配列retとグラフと呼ばれるマップを
-
C++での加重ジョブスケジューリングに関係するジョブを検索する
各ジョブに3つのパラメーターがあるN個のジョブのリストがあるとします。 1.開始時間2.終了時間3.利益サブセット内の2つのジョブが重複しないように、最大利益に関連付けられたジョブのサブセットを見つける必要があります。 したがって、入力がN=4およびJ={{2、3、55}、{4、6、25}、{7、20、150}、{3、150、250}}の場合、出力は[(2、3、55)、(3、150、250)]と最適な利益305 これを解決するには、次の手順に従います- 関数find_no_conflict()を定義します。これには、配列ジョブ、インデックス、が必要です。 左:=0、右:=
-
復号化された文字列のk番目の文字を検索します-C++で–2を設定します
コンセプト サブストリングの繰り返しがサブストリングとそれに続くサブストリングのカウントとして示される、特定のエンコードされたストリングに関して。したがって、たとえば、暗号化された文字列が「pq2rs2」でk =5の場合、復号化された文字列は「pqpqrsrs」であり、5番目の文字は「r」であるため、出力は「r」になります。 暗号化された部分文字列の頻度は1桁を超える場合があることに注意してください。したがって、たとえば「pq12r3」では、pqが12回繰り返されます。ここでは、サブストリングの頻度に先行0は存在しません。 入力 "p2q2r3", k = 6 出力 r
-
C ++のBST(BSTの順序統計量)でk番目に小さい要素を検索します
二分探索木があり、入力として値Kがあるとすると、ツリー内でK番目に小さい要素を見つける必要があります。 したがって、入力が次のような場合 k =3の場合、出力は15になります。 これを解決するには、次の手順に従います- 関数find_kth_smallest()を定義します。これは、root、count、k、を取ります。 ルートがNULLの場合、- NULLを返す left =find_kth_smallest(rootの左側、カウント、k) leftがNULLでない場合、- 左に戻る (カウントを1つ増やします) count
-
増加部分と減少部分がC++の2つの異なる配列からのものであるような最長のビットニックシーケンスを見つけます
コンセプト 与えられた2つの配列に関して、増加する部分が最初の配列からのものであり、最初の配列のサブシーケンスである必要があるように、可能な限り長いバイトニックシーケンスを決定するタスク。同様に、の減少部分は2番目の配列からのものである必要があり、そのサブシーケンスである必要があります。 入力 arr1[] = {2, 6, 3, 5, 4, 6}, arr2[] = {9, 7, 5, 8, 4, 3} 出力 2, 3, 4, 6, 9, 7, 5, 4, 3 入力 arr1[] = {3, 1, 2, 4, 5}, arr2[] = {6, 4, 3, 2} 出力 1, 2, 4, 5,
-
C++で文字列から文字を削除またはシャッフルすることによって形成された最長の回文を検索します
コンセプト 与えられた文字列に関して、文字列から文字を削除またはシャッフルすることによって形成できる最長の回文を決定します。最長の長さの回文ストリングが複数あることが観察された場合は、最後に1つの回文のみを返します。 入力 pqr 出力 p OR q OR r 入力 ppqqrr 出力 pqrrqp OR qprrpq OR rqppqr OR any other palindromic string of length 6. 入力 pqp 出力 pqp メソッド ここでは、回文文字列を3つの部分(頼む、中間、終了)に分割できます。奇数の長さの回文文字列、たとえば2n + 1に関して、ここ
-
C++で重複した配列から失われた要素を検索します
コンセプト 1つの要素を除いて互いに重複している2つの配列に関して、つまり、配列の1つから1つの要素が欠落していることを意味します。これは、欠落している要素を特定するためのタスクです。 入力 arr1[] = {2, 5, 6, 8, 10} arr2[] = {5, 6, 8, 10} 出力 2 2番目の配列に2がありません。 入力 arr1[] = {3, 4, 5, 6} arr2[] = {3, 4, 5, 6, 7} 出力 7 最初の配列に7がありません。 メソッド ここでは、配列を反復処理して要素ごとに検証し、一致しない要素が検出されたときに欠落している要素にマークを付ける
-
C++で最も近い左と右の小さい要素間の最大の違いを見つける
コンセプト 与えられた整数の配列に関して、私たちのタスクは、配列内のすべての要素の最も近い左と右の小さい要素の間の最大絶対差を決定することです。右側または左側に小さい要素がない場合は注意する必要があります。任意の要素の側では、小さい要素としてゼロを受け入れます。ここで、たとえば左端の要素の場合、左側の最も近い小さい要素は0に設定されます。同様に、右端の要素の場合、右側の小さい要素は0に設定されます。 入力 arr[] = {3, 2, 9} 出力 2 小さいLS[]{0、0、2}を残しました 右小さいRS[]{2、0、0} absの最大差分(LS [i]-RS [i])=2-0 =2
-
C++で任意の都市と駅の間の最大距離を見つける
コンセプト 0からN-1までの番号が付けられたNの都市の数と、駅が配置されている都市に関して、私たちのタスクは、任意の都市とその最寄りの駅との間の最大距離を決定することです。駅のある都市は任意の順序で指定できることに注意してください。 入力 numOfCities = 6, stations = [2, 4] 出力 2 入力 numOfCities = 6, stations = [4] 出力 4 次の図は、6つの都市と、駅が緑色で強調表示されている都市を含む最初の例を示しています。したがって、この場合、最も近い駅からの最も遠い距離は2の距離で0です。したがって、最大距離は1です。
-
C++で最大長のスネークシーケンスを見つける
コンセプト 与えられた数字のグリッドに関して、最大長のスネークシーケンスを決定し、それを表示します。最大長のスネークシーケンスが複数存在する場合は、それらのいずれかを表示することが確認されています。 実際には、スネークシーケンスはグリッド内の隣接する数字で構成されているため、各数字について、右側の数字またはその下の数字は+1または-1の値になります。ここで、たとえば、グリッド内の位置(a、b)にいる場合、その数が±1の場合は右に移動できます(a、b + 1)、またはその数の場合は下に移動できます(a + 1、b)は±1です。 たとえば、 10, 7, 6, 3 9, 8, 7, 6 8,
-
最初のN個の自然数の2乗の合計がC++でX以下になるように最大Nを見つけます
コンセプト 与えられた整数Xに関して、私たちのタスクは、最初のN個の自然数の合計がXを超えないように最大値Nを決定することです。 入力 X = 7 出力 2 N =3の場合、級数の合計がXi.eを超えるため、2はNの可能な最大値です。 1 ^ 2 + 2 ^ 2 + 3 ^ 2 =1 + 4 + 9 =14 入力 X = 27 出力 3 N =4の場合、級数の合計がXi.eを超えるため、3はNの可能な最大値です。 1 ^ 2 + 2 ^ 2 + 3 ^ 2 + 4 ^ 2 =1 + 4 + 9 + 16 =30 メソッド 簡単な解決策 −ここで、簡単な解決策は、S(N)≤Xになるよ
-
C++でNを1に減らすための最大操作を見つける
コンセプト 与えられた2つの数PとQ(PとQは最大10 ^ 6)に関して、数N =(P!/ Q!)を形成します。私たちのタスクは、可能な最大数の操作を実行することにより、Nを1に減らすことです。 NがXで割り切れる場合は、各操作でNをN/Xに置き換えることができます。可能な操作の最大数を決定してください。 入力 A = 7, B = 4 出力 4 説明 Nは210で、除数は2、3、5、7です。 入力 A = 3, B = 1 出力 2 説明 Nは6、除数は2、3です。 メソッド 数P!/ Q!の因数分解が観察されています。これは、数値の因数分解(Q + 1)*(Q + 2)*…*(P–