-
C++で二分探索木のバランスをとる
二分探索木があるとすると、同じノード値を持つ平衡二分探索木を見つける必要があります。二分探索木は、すべてのノードの2つのサブツリーの深さが1を超えて異ならない場合にのみ、バランスが取れていると言われます。複数の結果がある場合は、それらのいずれかを返します。したがって、ツリーが次のような場合- これを解決するには、次の手順に従います- inorder()メソッドを定義します。これにより、トラバーサルシーケンスが順番に配列に格納されます 構築メソッド()を定義します。これには低値と高値が必要です- 高の場合はnullを返します 中:=低+(高-低)/ 2 ルー
-
C++の電力値で整数を並べ替える
整数xの累乗は、次の手順を使用してxを1に変換するために必要な手順数として定義されていることがわかっています- xが偶数の場合、x =x / 2 xが奇数の場合、x =3 * x + 1 たとえば、3は7ステップを使用して1になるため(3→10→5→16→8→4→2→1)、x=3の累乗は7になります。したがって、いくつかの整数lo、hi、およびkがある場合。区間[lo、hi]のすべての整数を、累乗値の昇順で並べ替える必要があります。ここで、2つ以上の整数の累乗値が同じである場合は、昇順で並べ替えます。累乗値でソートされた範囲[lo、hi]のk番目の整数を見つける必要があり
-
C++の4つの除数
整数配列numsがあるとすると、正確に4つの除数を持つその配列内の整数の約数の合計を見つける必要があります。したがって、配列にそのような整数がない場合は、0を返します。たとえば、入力が[21、4、7]の場合、21には4つの除数1、3、7、21があるため、出力は32になります。 4には3つの除数1、2、4があり、7には2つの除数1と7があります。答えは21の約数の合計のみです。 これを解決するには、次の手順に従います- ok()というメソッドを定義します。これはxを入力として受け取ります ret:=1 + x、cnt:=2 i:=2の場合、i ^ 2 <=x、iを1増やしま
-
ソートされたリストをC++でバイナリ検索ツリーに変換する
要素が昇順でソートされている単一リンクリストがあるとすると、それを高さバランスのとれたBSTに変換する必要があります。したがって、リストが[-10、-3、0、5、9]のような場合、可能なツリーは-のようになります。 これを解決するには、次の手順に従います- リストが空の場合は、nullを返します sortListToBST()と呼ばれる再帰メソッドを定義します。これにより、リストの開始ノードが取得されます x:=リストaからの中間ノードの前のノードのアドレス mid:=正確なミッドノード midの値から取得して、値を持つ新しいノードを作成します ne
-
C++で文字列内の単語を逆にする
単語が少ない文字列があるとします。文字列内の単語の位置を逆にする必要があります。つまり、文字列が「速い茶色のキツネが怠惰な犬を飛び越える」のようなものである場合 これを解決するには、次の手順に従います- 関数getString()を定義します。これは入力としてsを取り、これは-として機能します。 i:=0、j:=sのサイズ– 1 s [i] =‘’およびi
-
C++のN番目の桁
無限の整数シーケンスが1つあるとすると、このシーケンスのn番目の桁を見つける必要があります。したがって、入力が11の場合、123456789101112のような数値を配置するかのように、出力は0になるため、11桁目は0になります。 これを解決するには、次の手順に従います- len:=0およびcnt:=9およびstart:=1 len * cnt n:=n –(len * cnt) cnt:=cnt * 10、start:=start * 10 lenを1増やします start:=start +(n --1)/ len s:=文字列として開
-
C++でK桁を削除する
文字列として表される非負の整数numがあるとすると、新しい数値が可能な限り最小になるように、数値からk桁を削除する必要があります。したがって、入力が「1432219」のようで、k =3の場合、結果は「1219」になります。 これを解決するには、次の手順に従います- スタックstを定義し、空の文字列retを作成します n:=numのサイズ 0からn–1の範囲のiの場合 num [i] スタックから削除し、kを1減らします stにnum[i]を挿入します kが0でない場合、スタックから要素を削除します スタックが空ではない間 ret:
-
C++プログラムでK桁を削除する
数のシーケンスが、少なくとも3つの要素で構成されていて、2つの連続する要素の差が同じである場合、算術と呼ばれるとします。したがって、たとえば、これらは等差数列です:[1、3、5、7、9]、[7、7、7、7]、[3、-1、-5、-9]、しかし次のシーケンスはそうではありません算術。 [1、1、2、5、7] ここで、N個の数値で構成されるゼロインデックス配列Aが与えられます。その与えられた配列のスライスは、0 <=P
-
C++でのセンテンススクリーンフィッティング
行x列の画面と、空でない単語のリストで表される文があるとします。したがって、指定された文を画面に何回収めることができるかを見つける必要があります。特定のプロパティがあります- 単語は2行に分割されません。 文中の語順は変更しないでください。 2つの単語の間にスペースは1つだけあります。 文中の単語の総数は100を超えません。 各単語の長さは0より長く10未満です。 1≤行、列≤20,000。 したがって、入力がrows=3およびcols=6のようで、文が[“ a”、“ bcd”、“ e”]の場合、出力は2になります。 これを解決するには、次の手順に従
-
C++で正しい間隔を見つける
区間iごとに、区間iの始点が区間iの終点以上である区間jが存在するかどうかを確認します。 jはiの「右側」にあると呼ばれます。任意の区間iについて、最小区間jのインデックスを保存する必要があります。これは、区間jが区間iの「正しい」関係を構築するための最小開始点を持っていることを示します。区間jが存在しない場合は、区間iに-1を格納します。そして最後に、各間隔の保存された値を配列として出力する必要があります。したがって、入力が[[3,4]、[2,3]、[1,2]]のようである場合、[3にはそのような正しい間隔がないため、出力は[-1、0、1]になります。 、4]、区間[2,3]の場合、区間[3
-
C++の3項式パーサー
任意にネストされた3項式を表す文字列があるとすると、式の結果を計算する必要があります。与えられた式が有効であり、0〜9、?、:、T、およびFの数字のみで構成されていると常に想定できます。 (ここで、TとFはそれぞれTrueとFalseを表します)。いくつかのプロパティがあります- 指定された文字列の長さは10000以下である必要があります。 各番号には1桁のみが含まれます。 条件式は右から左にグループ化します。 条件は常にTまたはFのいずれかになります。したがって、条件が数字になることはありません。 式の結果は、常に0〜9の数字、TまたはFのいずれかに評価されます
-
132C++のパターン
n個の整数a1、a2、...、anのシーケンスがあるとします。132パターンは、i
-
C ++で勝つことはできますか?
「100ゲーム」と呼ばれるゲームで、2人のプレーヤーが交代で、1から10までの整数を現在の合計に追加するとします。 100を超えると、彼/彼女が勝ちます。では、プレーヤーが整数を再利用できないようにゲームを変更したらどうなるでしょうか? =100に達するまで、交換せずに1..15の共通のプールから抽選を行う場合。 したがって、整数maxChoosableIntegerと別の整数の希望する合計が与えられたとすると、両方のプレーヤーが最適にプレーすると仮定して、最初に移動したプレーヤーが勝利を強制できるかどうかを判断します。 maxChoosableIntegerは値20を超えず、目的の合計
-
C++のラップアラウンド文字列の一意のサブ文字列
文字列sがabcdefghijklmnopqrstuvwxyzの無限ラップアラウンド文字列であるとすると、値sは次のようになります-...zabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd....。 これで、別の文字列pができました。私たちの仕事は、pの一意の空でない部分文字列がsにいくつ存在するかを調べることです。特に、入力は文字列pであり、文字列s内のpのさまざまな空でないサブ文字列の数を出力する必要があります。 したがって、入力が「zab」のような場合、出力は6になります。文字列「zab」の6つのサブ文字列「z」、「a」
-
C++の凸多角形
順番に結合したときにポリゴンを形成するポイントのリストがあるとすると、このポリゴンが凸面であるかどうかを確認する必要があります(凸多角形の定義)。少なくとも3つ、最大で10,000ポイントあることに注意する必要があります。また、座標は-10,000〜10,000の範囲です。 与えられた点によって形成されるポリゴンは常に単純なポリゴンであると想定できます。つまり、各頂点で正確に2つのエッジが交差し、それ以外の場合はエッジが互いに交差しないようにします。したがって、入力が[[0,0]、[0,1]、[1,1]、[1,0]]の場合、凸型であるため、戻り値はtrueになります。 これを解決するには、
-
C++でのパズルの前後
フレーズのリストがあるとし、パズルの前後のリストを生成します。ここでのフレーズは、小文字とスペースのみで構成される文字列です。開始位置と終了位置にスペースはありません。フレーズに連続したスペースはありません。 前後のパズルは、最初のフレーズの最後の単語が2番目のフレーズの最初の単語と同じである2つのフレーズをマージすることによって形成されるフレーズです。 2つのフレーズphrases[i]とphrases[j]ごとに形成できるBeforeとAfterのパズルを見つける必要があります。ここでI!=jです。 2つのフレーズを一致させる順序が重要であることに注意してください。両方の順序を考慮します
-
C++でのターゲットカラーまでの最短距離
配列の色があり、1、2、3の3色があるとします。いくつかのクエリを実行しました。各クエリは2つの整数iとcで構成されており、指定されたインデックスiとターゲットカラーcの間の最短距離を見つける必要があります。解決策がない場合は、-1を返します。したがって、colors配列が[1,1,2,1,3,2,2,3,3]のようであり、querys配列が[[1,3]、[2,2]、[6,1]のようである場合]]、出力は[3,0,3]になります。これは、インデックス1から最も近い3がインデックス4(3ステップ離れている)にあるためです。次に、インデックス2から最も近い2は、インデックス2自体にあります(0ステ
-
C++の括弧の各ペア間のサブストリングを逆にする
小文字と括弧で構成される文字列sがあるとします。一致する括弧の各ペアの文字列を、最も内側の括弧から始めて逆にする必要があります。また、結果に角かっこを含めることはできません。したがって、入力が「(hel(lowo)rld)」の場合、出力は「dlrlowoleh」になるため、最初から「(hel(lowo)rld)」→「(helowolrld)」のように変更されます。 →「dlrowoleh」。 これを解決するには、次の手順に従います- n:=文字列のサイズ、長さがnのparという配列を作成し、スタックstを定義します。 0からn–1の範囲のiの場合 s [i]が開き括弧の場合
-
C++での最小の騎士の動き
座標が-無限大から+無限大までの無限のチェス盤があり、正方形[0、0]に騎士がいるとします。騎士は、以下に示すように、8つの可能な動きをすることができます。それぞれの動きは、基本方向に2マス、次に直交方向に1マスです。 騎士を正方形[x、y]に移動するために必要な最小ステップ数を見つける必要があります。答えが存在することが保証されています。 したがって、入力がx=5およびy=5の場合、出力は4になります。これは[0,0]→[2,1]→[4,2]→[3,4]→[のようになります。 5,5] これを解決するには、次の手順に従います- マップを定義するm Solve()とい
-
C++のすべての行で最小の共通要素を検索する
すべての行が降順ではない順序で並べ替えられるマトリックスマットがあるとすると、すべての行で最小の共通要素を見つける必要があります。共通の要素がない場合は、-1を返します。したがって、行列が-のような場合 1 2 3 4 5 2 4 5 8 10 3 5 7 9 11 1 3 5 7 9 出力は5になります これを解決するには、次の手順に従います- マップm、n:=行列の行数を定義します nが0でない場合、x =列サイズ、それ以外の場合は0 0からn–1の範囲のiの場合