C ++

 Computer >> コンピューター >  >> プログラミング >> C ++
  1. C++でのN-aryツリーレベルの順序トラバーサル

    n-aryツリーがあるとすると、そのノードの値のレベル順トラバーサルを返す必要があります。 Nary-Tree入力のシリアル化は、レベル順の走査で表されます。ここでは、子の各グループがnull値で区切られています(例を参照)。したがって、次のツリーは[1、null、3,2,4、null、5,6]として表すことができます。 出力は[[1]、[3,2,4]、[5,6]]になります これを解決するには、次の手順に従います- 1つの行列を作成します ルートがnullの場合、ansを返します 1つのキューをqにして、ルートを挿入します qが空ではない間 si

  2. C++で重複しない間隔

    間隔のコレクションがあるとします。残りの間隔が重ならないようにするために削除する必要のある間隔の最小数を見つける必要があります。したがって、間隔が[[1,2]、[2,3]、[3,4]、[1,3]]の場合、[1,3]を削除して作成する必要があるため、出力は1になります。他のすべては重複していません。 これを解決するには、次の手順に従います- n:=配列のサイズ nが0の場合、0を返します カウント:=1 間隔の終了時間に基づいて配列を並べ替えます end:=最初の間隔の終了日 1からn–1の範囲のiの場合 =endの開始時刻の場合、 end:=

  3. C++でBSTのノードを削除する

    二分探索木があるとします。 1つのキーkを取得し、指定されたキーkをBSTから削除して、更新されたBSTを返す必要があります。したがって、ツリーが次のような場合- そして、キーk =3の場合、出力ツリーは-になります。 これを解決するには、次の手順に従います- ルートノードを削除するためにdeleteRoot()というメソッドを定義します。これは次のように機能します ルートがnullの場合、nullを返します ルートに右のサブツリーがない場合は、ルートの左に戻ります x:=ルートの後継者 xの左側を左に設定:=ルートの左側 ルート

  4. C++でバルーンをバーストするための矢印の最小数

    2次元空間に広がる球形の風船がほとんどないとします。バルーンごとに、水平方向の直径の開始座標と終了座標があります。開始は常に終了よりも小さくなります。最大104個の風船があります。 1つの矢印は、x軸に沿ったさまざまなポイントから正確に垂直に発射できます。 xstart =x =xendの場合、位置がxstartからxendのバルーンは、xで発射された矢印によって破裂します。発射できる矢の数に制限はありません。一度撃たれた矢が無限に上に移動し続けると仮定します。すべての風船を破裂させるために撃たなければならない矢の最小数を見つけなければなりません。したがって、入力が[[10,16]、[2,8]

  5. C++での循環配列ループ

    0の長さ3。 これを解決するには、次の手順に従います- n:=numsのサイズ n <2の場合、falseを返します 0からn-1の範囲のiの場合、nums [i]:=nums [i] mod n 0からn–1の範囲のiの場合 nums [i] =0の場合、次の反復に進みます。 遅い=i、速い=i; 0 遅い=遅いの次 fast:=next of the next of fast 遅い=速い場合、 遅い=遅いの次の場合、ループから出てきます trueを返す x:=nums [i]

  6. C++で最も頻繁に使用されるサブツリーの合計

    ツリーのルートがあるとすると、最も頻繁なサブツリーの合計を見つける必要があります。ノードのサブツリーの合計は、実際には、そのノードをルートとするサブツリー(ノード自体を含む)によって形成されるすべてのノード値の合計です。最も頻度の高いサブツリーの合計は、実際には次のとおりです。同点の場合は、頻度が最も高いすべての値を任意の順序で返します。したがって、ツリーが[5,2、-5]のような場合、[2]を返します。これは、2が2回発生するが、-5は1回しか発生しないためです。 これを解決するには、次の手順に従います- 2つのマップmとfreqを定義します。mは整数キーと対応するリストのセットであ

  7. C++で左下のツリー値を検索

    二分木があるとします。そのツリーの最後の行の左端の値を見つける必要があります。したがって、ツリーが次のような場合- 最後の行が[7、4]であり、左端の要素が7であるため、出力は7になります。 これを解決するには、次の手順に従います- 最初にansとlvl変数を0として定義します solve()と呼ばれる1つのメソッドを定義します。これはツリーノードを取り、レベルは最初は0です。これは次のように機能します- ノードがnullの場合は、を返します。 lvlの場合、ans:=ノードの値およびlvl:=level 解決(ノードの左側、レベル+ 1)

  8. C++の各ツリー行で最大値を見つける

    二分木があるとすると、その木の各レベルの最大の要素を見つける必要があります。したがって、ツリーが次のような場合- その場合、出力は[3,5,8]になります。 これを解決するには、次の手順に従います- ansという配列を定義します 再帰関数solve()を定義します。これはツリーノードを取り、レベルは最初は0です。このメソッドは-のように機能します。 ノードがnullの場合は、を返します。 level =ansのサイズの場合、ノード値をansに挿入します。それ以外の場合、ans [level]:=ans[level]とノード値の最大値 呼び出しsol

  9. C++での最大二分木

    整数配列があるとします。その配列内のすべての要素は一意です。この配列での最大ツリー構築は、次のように定義されます- ルートは配列内の最大数を保持します。 左側のサブツリーは、サブアレイの左側を最大数で割って構築された最大ツリーです。 右側のサブツリーは、サブアレイの右側を最大数で割って構築された最大ツリーです。 最大の二分木を構築する必要があります。したがって、入力が[3,2,1,6,0,5]の場合、出力は-になります。 これを解決するには、次の手順に従います- Solve()というメソッドを定義します。これにより、リストと左右の値が取得されます。関

  10. C++での二分木の最大幅

    二分木があるとすると、与えられた木の最大幅を取得する関数を定義する必要があります。ここで、木の幅はすべてのレベルの中で最大の幅です。二分木は完全な二分木と同じ構造であると考えますが、一部のノードはnullです。 1つのレベルの幅は、実際にはエンドノード間の長さです(レベル内の左端と右端の非ヌルノード。エンドノード間のヌルノードも長さの計算にカウントされます)。したがって、ツリーが次のような場合- 最後のレイヤーのノードは[5,3、null、9] であるため、最大幅は4です。 これを解決するには、次の手順に従います- ans:=1、サイズ:=0 (ノード、値)ペアを

  11. C++での二分木の剪定

    バイナリツリーのヘッドノードルートがあり、さらにすべてのノードの値が0または1であるとします。1を含まないすべてのサブツリーが削除された同じツリーを見つける必要があります。したがって、ツリーが次のような場合- これを解決するには、次の手順に従います- 再帰メソッドsolve()を定義します。これにより、ノードが取得されます。メソッドは次のようになります- ノードがnullの場合、nullを返します ノードの左側:=solve(ノードの左側) ノードの権利:=solve(ノードの権利) ノードの左側がnullで、ノードの右側もnullで、ノード値が0の

  12. C++での最大合計循環サブ配列

    Aで表される整数の循環配列Cがあるとすると、Cの空でないサブ配列の可能な最大合計を見つける必要があります。また、サブ配列には、固定バッファーAの各要素を最大で1回だけ含めることができます。配列が[1、-2,3、-2]のような場合、出力は3になります。これは、subarray[3]の合計が最大3であるためです。 これを解決するには、次の手順に従います- n:=vのサイズ すべてサイズnの配列leftSum、leftSumMax、rightSum、rightSumMaxを作成します leftSum [0]:=v [0]、leftSumMax [0]:=0最大0およびv[0]

  13. C++でスタックシーケンスを検証する

    2つのシーケンスが異なる値でプッシュおよびポップされたとすると、これが最初は空のスタックでのプッシュおよびポップ操作のシーケンスの結果である可能性がある場合にのみ、trueを見つける必要があります。したがって、入力がpush =[1,2,3,4,5]、pop =[4,5,3,2,1]の場合、出力はtrueになります。 push(1)、push(2)、push(3)、push(4)、pop():4、push(5)、pop():5、pop():3、pop():を使用できます。 2、pop():1 これを解決するには、次の手順に従います- Solve()という1つのメソッドを作成します。こ

  14. C++で同等の二分木を反転する

    二分木があるとします。二分木を反転する必要があります。フリップは次のことを示します。任意のノードを選択し、左右の子サブツリーを交換します。ここで、バイナリツリーXは、いくつかのフリップ操作の後でXからYを作成できる場合に限り、バイナリツリーYとフリップ同等になります。 2つの二分木がフリップ等価であるかどうかを判断するメソッドを作成する必要があります。ツリーはルートノードroot1とroot2によって与えられます。したがって、木が- 次に、値1、3、および5のノードを反転すると、出力はtrueになります。 これを解決するには、次の手順に従います- 1つの再帰関数solve

  15. C++で二分木の完全性を確認する

    二分木があるとします。ツリーが完全な二分木であるかどうかを確認する必要があります。レベルnの完全な二分木はn-1の完全なレベルを持ち、レベルnのすべてのノードは左から埋められます。したがって、入力ツリーが次のような場合- これは完全な二分木であるため、出力はtrueになります。 これを解決するには、次の手順に従います- ツリーが空の場合は、nullを返します キューqを作成し、それにルートを挿入します フラグを設定:=true qにはいくつかの要素があります sz:=キューのサイズ szは0ではありません node:=キューから削除し

  16. C++でのパンケーキの並べ替え

    配列Aがあるとすると、Aに対してパンケーキソート手法を実行します。ここでの主な制約は、rev(arr、i)という1つの操作しか使用できないことです。これにより、arrの要素が0からi番目の位置に反転します。このアイデアは、選択ソートのようなものです。 max要素を繰り返し配置して、配列のサイズを小さくします。したがって、入力が[54,85​​,52,25,98,75,25,11,68]の場合、結果は[11,25,25,52,54,68,75,85,98]になります。 これを解決するには、次の手順に従います- サイズ:=n 1の場合、実行 index:=[0 to size

  17. C++のバイナリツリーでコインを配布する

    N個のノードを持つ二分木のルートがあるとします。ここでは、ツリー内の各ノードにnode.val個のコインがあり、合計でN個のコインがあります。 1回の移動で、隣接する2つのノードを選択し、1つのノードから別のノードに1つのコインのみを移動できます。 (移動は、親から子ノードへ、または子から親ノードへの移動である可能性があります。)すべてのノードが正確に1枚のコインを持つようにするために必要な移動数を見つける必要があります。 したがって、ツリーが次のような場合- 次に、出力は3になります。左の子から2枚のコインをルートに送信し(コインごとに1枚の移動、つまり合計2枚の移動)、次に1枚のコイン

  18. C++でのチケットの最小コスト

    電車旅行で人気のある国があるとすると、1年前に電車旅行を計画しています。私たちは、私たちが旅行する年の日を保持している配列を持っています。毎日は1から365までの整数です。列車の切符は3つの異なる方法で販売されます- 1日パスは費用[0]ドルで販売されています; 1日パスは費用[0]ドルで販売されています; 30日パスは費用[2]ドルで販売されています。 ここでは、パスにより、何日も連続して旅行することができます。たとえば、2日目に7日間のパスを1つ取得した場合、7日間連続して旅行できます(2、3、4、5、6、7、および8)。与えられた日のリストから、毎日旅行するのに必

  19. C++での区間リストの共通部分

    閉じた区間のリストが2つあるとします。ここでは、区間の各リストはペアごとに互いに素であり、ソートされた順序になっています。これら2つの間隔リストの共通部分を見つけました。 閉区間[a、b]はa<=bとして表されることがわかっています。 a <=x<=bの実数xのセット。 2つの閉じた区間の共通部分は、空であるか、閉じた区間として表すことができる実数のセットです。 したがって、入力がA =[[0,2]、[5,10]、[13,23]、[24,25]]およびB =[[1,5]、[8,12]、[ 15,24]、[25,27]]の場合、出力は[[1,2]、[5,5]、[8,10]、[15,23]、[

  20. C++での最大二分木II

    最大ツリーのルートノードがあるとします。最大ツリーは、すべてのノードがそのサブツリー内の他のどの値よりも大きい値を持つツリーです。 construct()というメソッドがあるとします。これにより、リストAからルートを構築できます。construct()メソッドは-のようなものです。 リストAが空の場合は、nullを返します。 それ以外の場合は、A [i]をリストAの最大要素とします。次に、値A[i]でルートノードを作成します。 ルートの左の子はconstruct([A [0]、A [1]、...、A [i-1]])になります ルートの右の子はconstruct([A [

Total 5992 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:142/300  20-コンピューター/Page Goto:1 136 137 138 139 140 141 142 143 144 145 146 147 148