-
Pythonの二分木のパスによって形成されたすべての数の合計を見つけるプログラム
各ノードに0から9までの1桁の数字が含まれている二分木があるとします。ここで、ルートからリーフまでの各パスは、数字が順番に並んだ数字を表します。ツリー内のすべてのパスで表される数値の合計を見つける必要があります。 したがって、入力が次のような場合 その場合、出力は680(46(4→6)、432(4→3→2)、435(4→3→5))になり、それらの合計は913になります。 これを解決するには、次の手順に従います- 関数solve()を定義します。これはルートを取ります、string:=空白の文字列 root.leftではなくroot.rightではなくrootがゼロ以外の場合、
-
Pythonで行列内の囲まれた島の数を数えるプログラム
バイナリ行列があるとします。ここで、1は土地を表し、0は水を表します。私たちが知っているように、島は周囲が水に囲まれているグループ化された1のグループです。完全に囲まれた島の数を見つける必要があります。 したがって、入力が次のような場合 3つの島があるため、出力は2になりますが、そのうちの2つは完全に囲まれています。 これを解決するには、次の手順に従います- 関数dfs()を定義します。これにはi、jが必要です iとjが行列の範囲内にない場合、 Falseを返す matrix [i、j]が0と同じ場合、 Trueを返す matrix [i、j]:=0 a:=df
-
Pythonでn人が切り替えた後にオンになるスイッチの数をカウントするプログラム
番号がnで、部屋にn個のスイッチがあり、すべてのスイッチがオフになっているとします。今、次のようにスイッチを切り替えるn人- 人1は、1の倍数であるすべてのスイッチを切り替えます(つまり、すべてのスイッチを切り替えます)。 Person 2は、2の倍数(2、4、6、...)のスイッチを切り替えます Person iは、iの倍数であるスイッチを切り替えます。 最後にオンになるスイッチの数を見つける必要があります。 したがって、入力がn =5の場合、出力は2になります。最初はすべてがオフであり、[0、0、0、0、0]、人物1はすべてを反転します[1、1、1、1、1] 、Person 2
-
Pythonで最高ランクから最低ランクの順にチームの最終ランキングを見つけるプログラム
投票と呼ばれる文字列のリストがあるとします。ここでは、各エントリは小文字であり、優先度の高いものから低いものの順に候補者の投票を表しています。ここで、候補者のランクは、最初に、最も高い優先順位で受け取った投票数によって異なります。ここで、同点の場合は、次に高い優先順位で受け取った投票数などを確認します。それでも同点がある場合は、アルファベット順にランク付けされます。したがって、チームの最終ランキングを最高ランクから最低ランクの順に見つける必要があります。 したがって、入力がvotes =[zyx、 zxy、 xyz]の場合、zは最も高い優先度を受け取ったため、出力は zxyになり、最初にラン
-
Pythonで隣接するノードが同じ色を持たないツリーに色を付けることができるかどうかを確認するプログラム
各ノードの値がその色を表す二分木があるとします。木にはせいぜい2色しかありません。接続されている2つのノードが同じ色にならないように、ノードの色を何度でも交換できるかどうかを確認する必要があります。 したがって、入力が次のような場合 そうすれば、出力はTrueになります これを解決するには、次の手順に従います- 色:=空の地図 prop:=空のマップ 関数dfs()を定義します。これはノードを取り、フラグを立てます ノードがnullの場合、 戻る 色[ノードの値]:=色[ノードの値] + 1 prop [flag]:=prop [flag] + 1 dfs(
-
Pythonで合計がkであるパスの数をカウントするプログラム
二分木と別の値kがあるとすると、合計がkになるサブ子パスへの一意のノードの数を見つける必要があります。 したがって、入力が次のような場合 k =5の場合、パスは[2、3]と[1、4] であるため、出力は2になります。 これを解決するには、次の手順に従います- count:=マップは最初にキー0の値1を保持します ans:=0、プレフィックス:=0 関数dfs()を定義します。これはノードを取ります ノードがnullでない場合、 プレフィックス:=プレフィックス+ノードの値 ans:=ans +(count [prefix --target]、これが利用できない場合は0にな
-
Pythonですべての木を燃やすのにかかる日数を見つけるためのプログラム
3つのタイプのセルがあるフォレストを表す2Dマトリックスがあるとします。0空のセル1ツリーセル2火のセルのツリー毎日、隣接するセル(上、下、左、右、対角線)木が燃えています。すべての木が燃えるのにかかる日数を見つけなければなりません。それが不可能な場合は-1を返します。 したがって、入力が次のような場合 1 2 1 1 0 1 1 1 1 その場合、出力は4になります これを解決するには、次の手順に従います- ans:=0 twos:=新しいリスト 行列の行数が0から行数の範囲のiについては、 0か
-
Pythonに演算子を配置して24を形成できるかどうかを確認するプログラム
4つの番号のリストがあり、各番号は1から9の範囲で、固定された順序であるとします。ここで、演算子+、-、*、および/(/は整数の除算を示します)を数値の間に配置し、それらを角かっこでグループ化する場合、値24を取得できるかどうかを確認する必要があります。 したがって、入力がnums =[5、3、6、8、7]のような場合、出力は(5 * 3)-6 +(8 + 7)=24のようにTrueになります。 これを解決するには、次の手順に従います- 関数recur()を定義します。これには時間がかかります 回答:=新しいリスト 範囲0からarr-1のサイズのiの場合、do pre:=recur(
-
Pythonで8パズルを解くためのステップ数を見つけるプログラム
すべての数字が0から8の範囲にあり、繰り返しの数字がない3x3ボードがあるとします。これで、0を4つの隣接ノードのいずれかと交換できます。これを解決して、すべての配置されたシーケンスを取得しようとしています。目標に到達するために必要な最小ステップ数を見つける必要があります。 したがって、入力が次のような場合 3 1 2 4 7 5 6 8 0 その場合、出力は4になります これを解決するには、次の手順に従います- 関数find_next()を定義します。これはノードを取ります moves:=各値に対応する
-
k回移動してPythonで1位に戻る方法の数を確認するプログラム
n長さリストの位置0にいて、各ステップで、右に1か所または左に1か所(境界を超えない)移動するか、同じ位置にとどまることができるとします。ここで、正確にkステップを実行できる場合は、実行できる一意のウォークの数を見つけて、インデックス0に戻る必要があります。答えが非常に大きい場合は、mod 10 ^ 9+7を返します。 したがって、入力がn =7 k =4の場合、アクションは次のようになり、出力は9になります- [右、右、左、左]、 [右、左、右、左]、 [Stay、Stay、Stay、Stay]、 [右、左、滞在、滞在]、 [滞在、滞在、右、左]、 [右、滞在、滞在、左]、
-
Pythonでいくつかの割り当てを完了することによって取得できる最大のクレジットを見つけるためのプログラム
同じサイズの2つのリストがあり、これらは期限とクレジットであり、コースの割り当てを表しているとします。ここで、deadlines [i]は割り当てiの期限日を示し、credits[i]は割り当てiで取得するクレジットの量を表します。課題を完了する日は1日あり、締め切り日の前または締め切り日に完了することができます。複数の割り当てを同時に実行することはできません。課題のサブセットを完了することで獲得できる最大のクレジットを見つける必要があります。 したがって、入力が期限=[1、2、2、2]クレジット=[4、5、6、7]のようである場合、0日目にクレジット5で割り当てを完了することができるため、
-
Pythonでk個の数値を削除した後に隣接する値の最大差を見つけるプログラム
numsという数値のリストがあり、それらが昇順で並べ替えられているとすると、隣接する2つの値の最大差ができるだけ小さくなるように、リストからk値を削除して、最終的に差を見つける必要があります。 したがって、入力がnums =[15、20、30、400、1500] k =2の場合、出力は10になります。これは、[400、1500]を削除して20と30の差を取得する場合と同じです。 これを解決するには、次の手順に従います- abs_diff:=nums内の連続するすべての要素の差分のリスト 関数dp()を定義します。これにはi、j、cntが必要です cntが0と同じ場合、 m:=0
-
Pythonですべての桁が奇数であるnの最も近い数を見つけるプログラム
数値nがあるとすると、すべての桁が奇数である次の最も近い値を見つける必要があります。 nに最も近い値が2つある場合は、大きい方の値を返します。 したがって、入力がn =243の場合、出力は199になります。 これを解決するには、次の手順に従います- first_even:=-1 s:=n as string l:=sのサイズ 0からlの範囲のiについては、 s [i]が偶数の場合、 first_even:=i ループから抜け出す first_evenが-1と同じ場合、 return n big:=1 +s[インデックス0からiまで]の数値 s[i]
-
Pythonで特定のアナグラムを作成するために必要な最小限のスワップを見つけるプログラム
2つの文字列SとTがあり、それらが互いにアナグラムであるとします。 Tと同じにするために、Sで必要なスワップの最小数を見つける必要があります。 したがって、入力がS =kolkata T =katlokaの場合、出力は3になり、このシーケンスでスワップできます[katloka(指定)、kotlaka、koltaka、kolkata]。 これを解決するには、次の手順に従います- 関数util()を定義します。これにはS、T、iが必要です =Sのサイズの場合、 0を返す S[i]がT[i]と同じ場合、 return util(S、T、i + 1) x:=T [i] ret
-
Pythonのヒストグラムの下で最大の長方形の領域を見つけるプログラム
ヒストグラムの棒の高さを表す数値のリストがあるとします。バーの下に形成できる最大の長方形の領域を見つける必要があります。 したがって、入力がnums =[3、2、5、7]のような場合 その場合、出力は10になります これを解決するには、次の手順に従います- stk:=スタックで、最初に-1を挿入します 高さの最後に0を挿入 ans:=0 0から高さのサイズまでの範囲のiについては、 heights [i]
-
Pythonの特定の行列で1の最大の正方形の領域を見つけるプログラム
バイナリ行列があるとすると、その与えられた行列で1の最大の2乗を見つける必要があります。 したがって、入力が次のような場合 1 0 0 0 0 1 1 0 0 0 0 0 1 1 0 1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 1 1 1 0 0 その場合、出力は16
-
PythonでほぼBSTを正確なBSTにするプログラム
二分木があり、それがほぼ二分探索木であると仮定します。 2つのノードの値のみが交換されます。それを修正して、二分探索木を返す必要があります。 したがって、入力が次のような場合 その場合、出力は次のようになります これを解決するには、次の手順に従います- prev_node:=null、min_node:=null、max_node:=null found_one:=False ルートを順番に走査するノードごとに、を実行します。 prev_nodeがnullでない場合、 ノードの値
-
Pythonでバイナリツリーの最長の連続パスの長さを見つけるプログラム
二分木があるとしましょう。二分木で最長のパスを見つける必要があります。 したがって、入力が次のような場合 連続する最長のシーケンスが[2、3、4、5、6]であるため、出力は5になります。 これを解決するには、次の手順に従います- rootがnullの場合、 0を返す maxPath:=0 関数helper()を定義します。これはノードを取ります inc:=1、dec:=1 ノードの左側がnullでない場合、 [left_inc、left_dec]:=ヘルパー(ノードの左側) それ以外の場合、 [left_inc、left_dec]:=[0、0] ノード
-
Pythonの別のボックス内に収めることができるボックスの最大数を見つけるためのプログラム
各行が特定のボックスの高さと幅を表すボックスのリストがあるとします。最初のボックスが2番目のボックスよりも小さい場合(幅と高さの両方が他のボックスよりも小さい場合)、ボックスを別のボックスに入れることができます。ボックスに収めることができるボックスの最大数を見つける必要があります。 したがって、入力が次のような場合 幅 高さ 12 12 10 10 6 6 5 10 [12、12]ボックスに入れることができる[10、10]の中にボックス[6、6]を収めることができるので、出力は3になります。 これを解決す
-
文字列をチェックするプログラムは、Pythonで指定された単語のリストに分割することも、分割しないこともできます
単語リストとスペースのない別の文字列があるとします。単語のリストを使用して文字列を分類できるかどうかを確認する必要があります。 したがって、入力がwords =[love、 python、 we、 programming、 language] s =welovepythonprogrammingの場合、出力はTrueになります これを解決するには、次の手順に従います- words:=すべての一意の単語の新しいセット 関数rec()を定義します。これには時間がかかります iがsのサイズと同じ場合、 Trueを返す acc:=空白の文字列 iからsのサイズまでの範囲のjについては