-
Pythonでの二分木ジグザグレベルの順序トラバーサル
二分木があるとしましょう。ジグザグレベルの順序トラバーサルを見つける必要があります。したがって、最初の行については、左から右にスキャンし、次に2番目の行から右から左にスキャンし、次に再び左から右にスキャンします。したがって、ツリーが次のような場合- トラバーサルシーケンスは[[3]、[20,9]、[15,7]]になります これを解決するには、次の手順に従います- ツリーが空の場合は、空のリストを返します queue:=キューを作成し、ルートをキューに挿入し、2つの空のリストresとres2を作成し、フラグをTrueに設定します キューが空でない間 キュー
-
Pythonの基本的な電卓II
単純な式の文字列を評価するために、基本的な計算機を実装する必要があるとします。式の文字列は、負でない整数、+、-、*、/などの演算子や空のスペースのみを保持します。整数の除算は商の部分のみを取る必要があります。 したがって、入力が「3 + 2 * 2」の場合、出力は7になります。 これを解決するには、次の手順に従います- スタックを定義しますs、i:=0、x:=空の文字列 sの各文字jについて jが空白文字でない場合 jをxに追加 s:=x、n:=xの長さ while i
-
Pythonで配列をシャッフルする
配列Aがあるとすると、重複することなく一連の数値をシャッフルする必要があります。したがって、入力が[1,2,3]の場合、シャッフルの場合は[1,3,2]になり、リセット後、もう一度シャッフルすると[2,3,1] これを解決するには、次の手順に従います- さまざまな方法があります。これらは、init()、reset()、shuffle()です。これらは以下のように動作します- initは次のようになります- オリジナル:=指定された配列のコピー temp:=nums インデックス:=0からnumsの長さまでの数値のリスト– 1 reset()は元の配列を
-
Pythonのリーフから始まる最小の文字列
二分木のルートがあり、各ノードに0から25までの値が含まれているとします。これらの値は、文字「a」から「z」を表します。値0は「a」を表し、値1は「b」を表します。 、 等々。このツリーの葉で始まり、ルートで終わる辞書式順序で最小の文字列を検索する必要があります。したがって、ツリーが次のような場合- シーケンスが[0,3,25]であるため、出力は「adz」になります。 これを解決するには、次の手順に従います- 次のようにdfsトラバーサルメソッドを定義します ノードがnullでない場合、 ノード値を文字としてAに挿入します ノードに左右の子がない場合、
-
Pythonのプレオーダートラバーサルから二分探索木を構築する
指定されたプレオーダートラバーサルに一致するバイナリ検索ツリーを作成する必要があるとします。したがって、事前注文トラバーサルが[8,5,1,7,10,12]のような場合、出力は[8,5,10,1,7、null、12]になるため、ツリーは-になります。 これを解決するには、次の手順に従います- root:=0 th プレオーダートラバーサルリストのノード stack:=スタック、およびルートをスタックにプッシュします プレオーダーリストの2番目の要素の各要素iについて i:=値iのノード iの値がスタックトップ要素の最上位である場合、 スタックトップノードの左側:=i
-
PythonでD日以内にパッケージを発送する能力
D日以内にある港から別の港に出荷されるパッケージをコンベヤーベルトに持っていると仮定します。ここで、コンベヤーベルトのi番目のパッケージの重量はweights[i]です。毎日、ベルトに荷物を積んで船に積み込みます。船の最大耐荷重を超える重量を積載することはありません。コンベヤーベルト上のすべてのパッケージがD日以内に出荷されるようになる、船の最小重量容量を見つける必要があります。したがって、入力が[3,2,2,4,1,4]のようで、D =3の場合、出力は6になります。これは、6の出荷容量が、3日間ですべてのパッケージを出荷するための最小値であるためです。 − 1日目:3、2 2
-
Pythonの不機嫌そうな書店のオーナー
書店の所有者が、顧客リストのエントリ数分に対して店舗を開いているとします。毎分、何人かの顧客(customers [i])が店に入り、その後、すべての顧客はその分の終わりの後に去ります。数分で、所有者は不機嫌です。ここで、所有者がi分目に不機嫌である場合、grumpy [i] =1、それ以外の場合はgrumpy [i] =0です。書店の所有者が不機嫌である場合、その分の顧客は不幸です。書店のオーナーは、X分間まっすぐに不機嫌にならないようにするテクニックを知っています。その手法は2回以上使用することはできません。私たちは一日を通して幸せになることができる顧客の最大数を見つける必要があります。し
-
Pythonのルートからリーフへのパスのノードが不十分です
二分木があるとします。このノードと交差するそのようなすべてのルートからリーフへのパスの合計が厳密に制限未満である場合、そのノードは不十分であると呼ばれます。不十分なノードをすべて同時に削除し、結果の二分木のルートを返す必要があります。したがって、ツリーがのようで、制限が1 − の場合、 その場合、出力ツリーは-になります。 これを解決するには、次の手順に従います- メソッドsolve()を定義します。これはルートを取り、制限します ノードに左右のサブツリーがない場合は、 rootの値が1未満の場合はnullを返し、そうでない場合はroot ルートがサブツリーを離れてい
-
Pythonの個別の文字の最小のサブシーケンス
テキストがあるとすると、テキストのすべての異なる文字を1回だけ含む、辞書式順序で最小のテキストのサブシーケンスを見つける必要があります。したがって、入力が「cdadabcc」のような場合、出力は「adbc」になります。 これを解決するには、次の手順に従います- スタックst、2つのマップlast_oを定義し、考慮します。最初は空白です テキストの範囲の長さのiの場合–1から0まで text[i]がlast_oに存在しない場合- last_o [text [i]]:=i 考察[text[i]]:=false i:=0 whilei<テキストの長さ スタックに要素がない場合 t
-
Pythonで最小値が最大のパス
R行とC列の整数の行列Aがあるとすると、[0,0]で始まり[R-1、C-1]で終わるパスの最大スコアを見つける必要があります。ここで、スコアリング手法はそのパスの最小値になります。たとえば、パス8→4→5→9の値は4です。パスは、4つの主要な方向(北、東、西、南)のいずれかで、1つの訪問済みセルから隣接する未訪問セルに数回移動します。 。 たとえば、グリッドが-のような場合 5 4 5 1 2 6 7 4 6 オレンジ色のセルがパスになります。出力は4です これを解決するには、次の手順に従います- r:=行数およびc:=列数
-
Pythonで本棚の棚を埋める
一連の本があるとします。ここで、i番目の本には厚さの本[i][0]と高さの本[i][1]があります。これらの本を、全幅shelf_widthの本棚に順番に配置したい場合。この棚に置く本のいくつかを選択した場合(それらの厚さの合計が<=シェルフ幅になるように)、本棚の全高が最大高さだけ増加した本棚の別のレベルの棚を構築します。置くことができる本。配置する本がなくなるまで、このプロセスを繰り返します。上記のプロセスの各ステップで、配置する本の順序は、指定された一連の本と同じ順序であることに注意する必要があります。この方法で棚を配置した後、本棚全体が可能な最小の高さを見つける必要があります。したがっ
-
Pythonでノードを削除してフォレストを返す
二分木のルートがあるとすると、ツリー内の各ノードには一意の値があります。 to_deleteの値を持つすべてのノードを削除すると、フォレストが残ります。残りの森で木の根を見つけなければなりません。したがって、入力が次のような場合 to_delete配列が[3,5]のような場合、出力はになります。 これを解決するには、次の手順に従います- 配列解像度を定義する メソッドsolve()を定義します。これにより、ノード、to_delete配列、およびノードがルートであるかどうかを示すブール型の情報が取得されます。メソッドは以下のように動作します- ノードがnullの場合、nul
-
Pythonでの2つの有効な括弧文字列の最大ネスト深度
文字列があり、その文字列が「(」および「)」文字のみで構成され、これらのプロパティを満たしている場合にのみ、有効な括弧文字列(VPSで示される)であるとします- 空の文字列、または ABと書くことができます。ここで、AとBはVPS、または (A)と書くことができます。ここで、AはVPSです。 以下のように、任意のVPS Sのネスト深度の深さ(S)を定義することもできます- 深さ( )=0 深さ(A + B)=深さ(A)、深さ(B)の最大値。ここで、AとBはVPSです 深さ( ( + A + ))=1 +深さ(A)、ここでAはVPSです。 VPS
-
Pythonのリーフ値からの最小コストツリー
正の整数の配列arrがあると仮定し、次のようなすべての二分木を検討します- 各ノードには0個または2個の子があります。 arr配列の値は、ツリーを順番にトラバースする際の各リーフの値に対応します。 各非リーフノードの値は、それぞれその左サブツリーと右サブツリーの最大リーフ値の積に等しくなります。 考慮されるすべての可能な二分木の中で、各非リーフノードの値の可能な最小の合計を見つける必要があります。したがって、入力arrが[6,2,4]の場合、2つのツリーが存在する可能性があるため、出力は32になります- これを解決するには、次の手順に従います- メモと呼ばれる地図を作成する
-
Pythonでのコーススケジュール
0からnumCourses-1までのラベルが付いた合計numCoursesコースがあるとします。一部のコースには前提条件がある場合があります。たとえば、コース0を受講するには、最初にコース1を受講する必要があります。これは、[0,1]のペアを使用して表されます。提供されているコースの総数と前提条件のペアのリストがあるとすると、すべてのコースを終了できるかどうかを確認する必要がありますか? したがって、入力が− numCourses =2で、前提条件=[[1、0]]の場合、合計2つのコースがあるため、結果はtrueになります。コース1を受講するには、コース0を終了する必要があります。それで可能
-
PythonのコーススケジュールII
合計n個のコースがあり、これらには0からn-1までのラベルが付けられているとします。コースの総数と前提条件のペアのリストを考えると、一部のコースには前提条件がある場合があります。すべてのコースを完了するために必要なコースの順序を見つける必要があります。正しい注文が複数ある可能性があります。そのうちの1つを見つける必要があります。すべてのコースを終了できない場合は、空の配列を返します。 したがって、入力が2 [[1、0]]の場合、結果は[0,1]になります。受講するコースは全部で2つあります。コース番号1を受講するには、コース0を終了する必要があります。したがって、正しいコースの順序は[0,1
-
Pythonでネストされたリストイテレータをフラット化する
整数のネストされたリストがあるとします。それを平坦化するためにイテレータを実装する必要があります。各要素は整数またはリストのいずれかです。そのリストの要素は、整数または他のリストの場合もあります。したがって、入力が[[1、1]、2、[1、1]]の場合、出力は[1、1、2、1、1]になります。 これを解決するには、次の手順に従います- 初期化セクションでは、ネストされたリストを取得します。これは次のように機能します- resを空のリストとして設定し、インデックス:=0、getVal(nestedList)を呼び出します getVal()はnestedIntegersを取り、こ
-
PythonでDeleteGetRandomO(1)を挿入します
平均O(1)時間で以下のすべての操作をサポートするデータ構造があるとします。 insert(val)-これは、アイテムvalがまだ存在しない場合、セットに挿入します。 remove(val)-これにより、アイテムvalが存在する場合、セットから削除されます。 getRandom-これは、現在の要素のセットからランダムな要素を返します。各要素は、返される確率が同じである必要があります。 これを解決するには、次の手順に従います- 初期化には、親マップと要素配列を定義します insert()関数の場合、入力としてvalを取ります valが親マップに存在しない
-
Pythonで壊れた電卓
電卓が壊れていて、数字が表示されているとすると、実行できる操作は2つだけです- Double-これは、ディスプレイ上の数値に2を掛けます、または; デクリメント-これにより、表示されている数が1つ減ります 最初、電卓は数値Xを表示しています。数値Yを表示するために必要な最小の演算数を見つける必要があります。 したがって、入力がX =5で、Yが8の場合、出力は2になり、デクリメントとして1回、次に2倍になります これを解決するには、次の手順に従います- res:=0 X res:=res + Y mod 2 + 1 Y:=Y / 2 Yが偶数
-
誰もがC++で友達になった最初の瞬間
ソーシャルグループに、0からN-1までの一意の整数IDを持つN人の異なる人々がいるとします。ここにログのリストがあります。各logs[i]=[time、id_A、id_B]には、負でない整数のタイムスタンプと2人の異なる人物のIDが含まれています。各ログには、2人の異なる人が友達になった時間が示されています。 AがBと友達である場合、BはAと友達です。AがBと友達である場合、またはAがBと知り合いである場合、AはBと知り合いであるとしましょう。すべての人が他のすべての人と知り合いになりました。そのような時間が見つからない場合は、-1を返します。したがって、入力が次のようになっている場合:[[2