-
Pythonで訪問した場所を移動し続けることでロボットが目標に到達できることを確認するプログラム
現在、位置(0、0)(デカルト平面)に座っているロボットがあるとします。 N(北)、S(南)、W(西)、E(東)を含む、移動可能な移動のリストがある場合。ただし、ロボットが以前の場所に到達した場合、ロボットは新しい未訪問の場所に到達するまで同じ方向に移動し続けます。移動後、(x、y)座標で終了するかどうかを確認する必要があります。 したがって、入力が次のような場合 move =[N、N、E、N、W、S]、coord =[0、-1]の場合、ロボットは2つ進むため、出力はTrueになります。上、右、上、左、下、現在の位置にアクセスすると下に移動し、次にその場所にもアクセスし、再び下に移動
-
Pythonで正方行列を反時計回りに90度回転するプログラム
正方行列があるとすると、反時計回りに90度回転する必要があります。 1 4 7 2 5 8 3 6 9 その場合、出力は次のようになります 7 8 9 4 5 6 1 2 3 これを解決するには、次の手順に従います- 行列が空の場合、 空白のリストを返す n:=行列の行数 行列の各行について、次のようにします 行を逆にする 0からn-1の範囲のiの場合、実行 0からi-1の範囲のjについては、次のようにします matrix
-
Pythonで作業されているタスクの数を見つけるプログラム
各間隔が[start、end)のような間隔のリストがあり、typesと呼ばれる文字列のリストもあるとします。ここで、特定のiについて、intervals [i]は、誰かが[start、end)からジョブタイプ[i]に取り組んだ時間を示します。同じタイプの2つの間隔が重なったり、接触したりすることはありません。したがって、各項目に[start、end、num_types]があり、最初から最後まで、作業中のタスクのnum_types数を示すソートされたマージリストを見つける必要があります。 したがって、入力がintervals =[[0、3]、[5、7]、[0、7]] types =[問題解決、
-
Pythonで敵が同じグループにとどまることができない人を分離するプログラム
数nと敵と呼ばれる2D行列があるとします。ここで、nは、[0、n-1]からラベル付けされたn人がいることを示します。これで、敵の各行に[a、b]が含まれます。これは、aとbが敵であることを意味します。敵である2人が同じグループに入らないように、n人を2つのグループに分割できるかどうかを確認する必要があります。 したがって、入力がn =4、敵=[[0、3]、[3、2]]の場合、これら2つのグループ[0、1、2]と[を使用できるため、出力はTrueになります。 3]。 これを解決するには、次の手順に従います- グラフ:=空の隣接リスト 敵の各敵ペア(u、v)について、実行します
-
Pythonで捕食者がいない動物の最小数を数えるプログラム
numsという数字のリストがあるとします。nums[i]はi番目の動物の捕食者を示し、捕食者がいない場合は-1を保持します。直接または間接の捕食者と同じグループに動物がいないように、動物のグループの数を最小限に抑える必要があります。 したがって、入力がnums =[1、2、-1、4、5、-1]のような場合、出力は3になります。これは、[0、3]、[1、4]のようなグループを持つことができるためです。 ]、[2、5]。 これを解決するには、次の手順に従います- Aが空の場合、 0を返す adj:=白地図 vis:=新しいセット roots:=新しいリスト
-
Pythonで0からnの範囲のすべての数値のセットビットの総数をカウントするプログラム
数値がnumであるとします。 0≤i≤numの範囲の各数値iについて、対応する2進数の1の数を計算し、それらをリストとして返す必要があります。したがって、数値が5の場合、数値は[0、1、2、3、4、5]であり、これらの数値の1の数は[0、1、1、2、1、2]であるため、次のようになります。 7を返します。 これを解決するには、次の手順に従います- res:=num+1個の0を保持する配列 オフセット:=0 for i in range 1 to num + 1 iおよびi− 1 =0の場合、res [i]:=1およびoffset:=0 それ以外の場合は、オ
-
Pythonで最初のセットの要素が2番目のセットよりも小さいセットを等しい合計セットに分割するプログラム
numsと呼ばれる数値のリストがあるとすると、次のようにリストを2つのグループAとBに分割できるかどうかを確認する必要があります。Aの合計とBの合計が同じである。ここで、Aのすべての数値は、Bのすべての数値よりも厳密に小さくなっています。 したがって、入力がnums =[3、4、5、12]のような場合、A=[3,4,5]とB=[12]があり、両方の合計が12であるため、出力はTrueになります。 。 これを解決するには、次の手順に従います- リスト番号を並べ替える total:=numsのすべての要素の合計 s:=0、i:=0 私は
-
Pythonでバイナリツリーノードの兄弟値を見つけるプログラム
値kと二分探索木があると仮定します。ここでは、各ノードはリーフであるか、2つの子を含みます。値kを含むノードを見つけて、その兄弟の値を返す必要があります。 したがって、入力が次のような場合 k =4.の場合、出力は10になります。 これを解決するには、次の手順に従います- 関数util()を定義します。これはルート、k、ansを取ります ルートの左側がnullでなく、ルートの右側がnullでない場合、 戻る ルートの値の場合、 ルートの権利の値がkと同じである場合、 ansの最後にルートの左側の値を挿入します 戻る それ以外の場
-
Pythonの行列の各行の最小の交差要素を見つけるプログラム
各行が昇順でソートされている2Dマトリックスがあるとします。すべての行に存在する最小の数を見つける必要があります。そのような結果がない場合は、-1を返します。 したがって、入力が次のような場合 2 3 5 5 10 10 1 3 5 その場合、出力は5になります これを解決するには、次の手順に従います- 行列が空の場合、 -1を返す 最初:=行列の最初の行からの新しいセット 行列の各行について、次のようにします first:=最初に行の要素のセットを交差させます 最初が空の場合、 -1を
-
Pythonのパリティ値に基づいて配列をソートするプログラム
整数が少ない配列Aがあるとします。数字を偶数、奇数として並べ替える必要があります。したがって、最初に偶数を入力し、次に奇数を入力します。したがって、配列がA =[1、5、6、8、7、2、3]の場合、結果は[6、8、2、1、5、7、3]のようになります。 これを解決するには、次の手順に従います- i:=0およびj:=0を設定します 一方、j
-
合計がPythonで与えられる少数の数の積を見つけるプログラム
数nがあり、それらの合計がnに等しくなるように、2つ以上の数を見つける必要があり、これらの数の積が最大化されると、積を見つける必要があります。 したがって、入力がn =12の場合、出力は81になり、3 + 3 + 3 + 3=12および3*3 * 3 * 3=81となります。 これを解決するには、次の手順に従います- 関数dp()を定義します。これにはnかかります nが0と同じ場合、 1を返す ans:=0 1からn+1の範囲のiの場合、実行 ans:=ansの最大値と(i * dp(n − i)) ansを返す メインの方法から、
-
Pythonでいくつかの要素をポップした後、すべてのスタックの最大合計をチェックするプログラム
スタックのリストがあるとすると、任意のスタックを取得して、そこから任意の数の要素をポップできます。すべてのスタックが同じ合計値を持つように、達成できる最大の合計を見つける必要があります。 したがって、入力がstacks =[[3、4、5、6]、[5、6、1、4、4]、[10、2、2、2]]のような場合、出力は12になります。 -のような操作を行うことができるので 最初のスタックから[6]をポップすると、[3、4、5]の合計は12になります。 2番目のスタックから[4,4]をポップすると、[5、6、1]の合計は12になります。 3番目のスタックから[2,2]をポップすると、[
-
サブリストの合計をチェックするプログラムは、指定されたリストPythonの合計よりも厳密に大きい
numsと呼ばれる数値のリストがあるとすると、その合計がリストの合計よりも厳密に大きくなるようなサブリストがあるかどうかを確認する必要があります。 したがって、入力がnums =[1、-2、3、4]のようである場合、リストの合計は6であり、サブリスト[3、5]の合計は8であるため、出力はTrueになります。厳密に大きい。 これを解決するには、次の手順に従います- total:=要素の合計nums s:=0 numsの各iについて、実行します s:=s + i s <0の場合、 Trueを返す s:=0 i:=numsのサイズ-
-
サブシーケンスの最大合計を見つけるプログラム。2つの値の差はPythonでの位置の差と同じです。
numsと呼ばれる数値のリストがあるとすると、厳密に増加する値のサブシーケンスを選択します。ここで、2つの数値のそれぞれの違いは、2つのインデックスの違いと同じです。したがって、そのようなサブシーケンスの最大合計を見つける必要があります。 したがって、入力がnums =[6、7、9、9、8、5]の場合、インデックスが[0、1、]であるサブシーケンス[6、7、9]を選択すると、出力は22になります。 3]。連続する各数値の違いは[1、2]であり、これはそれらのインデックスの違いと同じです。 これを解決するには、次の手順に従います- d:=空のマップ インデックスiと値x(nums
-
Pythonで1つのツリーが他のツリーのサブツリーであるかどうかを確認するプログラム
2つの二分木があるとします。 2番目のツリーが最初のツリーのサブツリーであるかどうかを確認する必要があります。 したがって、入力が次のような場合 その場合、出力はTrueになります。 これを解決するには、次の手順に従います- 関数solve()を定義します。これはルート、ターゲットになります ルートがnullで、ターゲットもnullの場合、 Trueを返す ルートがnullまたはターゲットがnullの場合、 Falseを返す ルートの値がターゲットの値と同じである場合、 戻り値solve(ルートの左、ターゲットの左)とsolve(ル
-
数独グリッドを検証するプログラムは、Pythonで解決可能かどうか
9×9の数独グリッドが1つあるとします。それが有効か今かを確認する必要があります。次のルールに従って、塗りつぶされたセルのみを検証する必要があります- 各行には、繰り返しなしで1〜9の数字が含まれている必要があります。 各列には、繰り返しなしで1〜9の数字が含まれている必要があります。 グリッドの9(3-3)サブボックスのそれぞれには、繰り返しなしで1-9の数字が含まれている必要があります。 数独グリッドが-のようなものだとします これは有効です。 これを解決するには、次の手順に従います- 0から8の範囲のiの場合 row、col、block、ro
-
合計がkと同じかPythonではない4つの要素を見つけることができるかどうかを確認するプログラム
numsと呼ばれる数値のリストと値kがあるとすると、リストに合計kになる4つの一意の要素があるかどうかを確認する必要があります。 したがって、入力がnums =[11、4、6、10、5、1] k =25のような場合、合計が25である[4、6、10、5]があるため、出力はTrueになります。 これを解決するには、次の手順に従います- リスト番号を並べ替える n:=numsのサイズ 0からn− 4の範囲のiの場合、実行 i +1からn− 3の範囲のjの場合、実行 l:=j + 1、h:=nums − 1のサイズ l
-
3つの固有の要素を見つけることができるかどうかを確認するプログラムosesumがkと同じかPythonでないか
numsと呼ばれる数値のリストと別の値kがあるとすると、リスト内で合計がkである3つの一意の要素を見つけることができるかどうかを確認する必要があります。 したがって、入力がnums =[11、4、6、10、5、1] k =20のような場合、合計が20である数値[4,6,10]があるため、出力はTrueになります。 これを解決するには、次の手順に従います- リスト番号を並べ替える l:=0、r:=numsのサイズ-1 l
-
合計がターゲットより少ないかPythonでない配列からトリプレットの数をチェックするプログラム
numsと呼ばれる数値のリストと別の値のターゲットがあるとすると、nums [i] + nums [j] + nums [k]
-
合計がkPythonに最も近いリストから3つの一意の要素を見つけるプログラム
numsと呼ばれる数値のリストと別の値kがあるとすると、| a + b + c − k |となるようにnums(a、b、c)で3つの一意のエントリを見つける必要があります。最小化され、絶対差を返します。 したがって、入力がnums =[2、5、25、6] k =14のような場合、[2、5、6]をとると、出力は1になり、絶対差は次のようになります。 | 13 − 14 | =1。 これを解決するには、次の手順に従います- リスト番号を並べ替える ans:=1 ^ 9 0からnumsのサイズの範囲のiの場合、実行します j:=i + 1 k:=numsのサイズ