-
PythonでGCDを大きくするための配列からの最小限の削除
N個の番号のリストがあるとします。残りの数のGCDがN個の最初のGCDよりも大きくなるように、必要な数の削除の最小数を見つける必要があります。 3になります。 これを解決するには、次の手順に従います- INF:=100001 spf:=要素0からINFまでのリスト 関数sieve()を定義します 範囲4からINFのiの場合、2ずつ増やします。 spf [i]:=2 範囲3からINFのiの場合は、 INF − 休憩 spf [i]がiと同じ場合、 範囲2*iからINFのjの場合、各ステップでiずつ更新します。 spf [j]がjと同じ場合、 spf [j]:=i
-
Pythonで最大nCr値を持つ指定された配列からペアを検索します
n個の整数を持つ配列arrがあるとすると、arr [i] Carr [j]ができるだけ大きくなるように、配列からarr[i]とarr[j]を見つける必要があります。ペアが複数ある場合は、いずれか1つを返却してください。 したがって、入力が[4、1、2]のようである場合、出力は4 C1 =4、4C2 =6、2C1 =2として、4 2になります。したがって、(4,2)は必要に応じてペアになります。 これを解決するには、次の手順に従います- リストを並べ替えるv N:=v [n-1] N mod 2が1と同じ場合、 最初:=N / 2(整数除算) 秒:=最初+1 左:=-1、右:=-1
-
Pythonで特定の二分木で最大の完全なサブツリーを見つける
二分木があるとしましょう。この二分木で最大の完全なサブツリーのサイズを見つける必要があります。私たちが知っているように、完全な二分木は、おそらく最終レベルなしですべてのレベルが完全に満たされ、最終レベルに可能な限りすべてのキーが残っている場合、二分木です。 したがって、入力が次のような場合 その場合、出力はサイズとして4になり、順序どおりの走査は10、45、60、70になります。 これを解決するには、次の手順に従います- isComplete、isPerfectなどのいくつかのパラメーターを使用して戻り型を定義します。これらは最初はfalseで、次にsizeとrootTree、
-
Pythonで数値から最小桁を削除して形成された最大の立方体を見つける
数がNであるとすると、数から最小桁(おそらく0)を削除することによって生成できる最大の完全な立方体を決定する必要があります。与えられた数字から任意の数字を削除して、ターゲットに到達することができます。私たちが知っているように、ある整数Mに対してN =M ^ 3の場合、数Nは完全な立方体と呼ばれます。 したがって、入力が806のような場合、出力は8になります。これは、数値から0と6を削除できるため、8になります。これは、2の完全な立方体です。 これを解決するには、次の手順に従います- 関数preProcess()を定義します。これにはnがかかります temp_cubes:=新しいリスト
-
Pythonの式O(1)スペースO(N ^ 2)時間計算量でバランスの取れた括弧を確認します
これらの角かっこ(、)、{、}、[および]を含む文字列strがあるとすると、角かっこがバランスしているかどうかを確認する必要があります。開閉ブラケットのタイプが同じタイプの場合、ブラケットはバランスが取れていると言えます。ブラケットは正しい順序で閉じられます。 したがって、入力が{([])}のような場合、出力はTrueになります。 これを解決するには、次の手順に従います- cnt:=0 i:=0 j:=-1 関数solve()を定義します。これにはs、tempがかかります cnt:=cnt-1 s:=sからの新しいリスト -1でs[j]がtempと同じ場合、 s [i
-
特定の二分木がPythonの赤黒木と同じように高さのバランスが取れているかどうかを確認します
赤黒木があると仮定します。ここでは、ノードの最大の高さは最大で最小の高さの2倍です。二分探索木がある場合は、次のプロパティを確認する必要があります。すべてのノードに関して、リーフからノードへの最長パスの長さは、ノードからリーフへの最短パス上のノードの2倍以下です。 したがって、入力が次のような場合 バランスが取れているため、出力はTrueになります。 これを解決するには、次の手順に従います- 関数solve()を定義します。これはルート、max_height、min_heightを取ります rootがnullの場合、 max_height:=0、min_height:=0
-
特定のバイナリツリーがPythonのヒープであるかどうかを確認します
二分木があるとしましょう。ヒープかどうかを確認する必要があります。ヒープには次のプロパティがあります。ヒープはバイナリツリーになります。そのツリーは完全なツリーである必要があります(つまり、最後を除くすべてのレベルがいっぱいである必要があります)。そのツリーのすべてのノード値は、その子ノード(max-heap)以上である必要があります。 したがって、入力が次のような場合 その場合、出力はtrueになります これを解決するには、次の手順に従います- 関数number_of_nodes()を定義します。これが定着します rootがnullの場合、 0を返す それ以外の場合、
-
指定された文字列がPythonで有効な数値であるかどうかを確認します
数字と小数点を保持する文字列があるとすると、その文字列が数値を表しているかどうかを確認する必要があります。入力が「2.5」の場合、出力はtrueになり、入力が「xyz」の場合、出力はfalseになります。 これを解決するには、次の手順に従います- これを解決するために、プログラミング言語の文字列解析手法を使用します。文字列を数値に変換しようとします。例外がない場合は数値になり、そうでない場合は数値になります。 例 理解を深めるために、次の実装を見てみましょう- def isNumeric(s): s = s.strip() try:
-
Pythonの配列のサイズkのすべてのセグメントにキーが存在するかどうかを確認します
N個の要素を持つ配列Aがあり、別の値pとセグメントサイズkがあるとします。キーpがAのサイズkのすべてのセグメントに存在するかどうかを確認する必要があります。 したがって、入力がA =[4、6、3、5、10、4、2、8、4、12、13、4]、p =4、k =3の場合、出力はTrue これを解決するには、次の手順に従います- i:=0 i
-
Pythonで変更されたチェス盤にN泊しているときに、王が有効な動きを移動できるかどうかを確認します
チェスと同じルールの無限チェス盤が1つあり、無限チェス盤にN騎士の座標と王の座標がある場合、王がチェックメイトであるかどうかを確認する必要があります。無限ボードの座標は、(-10 ^ 9 <=x、y <=10 ^ 9)のような大きな値で囲まれています。 したがって、入力が騎士の位置=[[2,1]、[1,3]、[3,6]、[5,5]、[6,1]、[7,3]]および王の位置のような場合:[4,3]、 キングには動きがないため、出力はTrueになり、チェックメイトになります。 これを解決するには、次の手順に従います- my_dict:=新しい地図 0からnの範囲のiについては、
-
番号がPythonのトロイの木馬番号であるかどうかを確認します
番号nがあるとすると、nがトロイの木馬番号であるかどうかを確認する必要があります。私たちが知っているように、トロイの木馬の数は、完全な力のない強い数です。素数除数またはnの因数pごとに、p ^ 2も除数である場合、数nは強い数です。言い換えれば、すべての素因数が少なくとも2回出現します。トロイの木馬の数は多いです。しかし、その逆は真実ではありません。つまり、すべての強い数字がトロイの木馬の数字であるとは限りません。a^bとして表すことができない数字だけです。 したがって、入力が72のような場合、72は(6 * 6 * 2)=(6 ^ 2 * 2)として表すことができるため、出力はTrueにな
-
Pythonで数値がアキレス数であるかどうかを確認します
数nがあるとします。 nがアキレス数であるかどうかを確認する必要があります。私たちが知っているように、数は強力な数の場合はアキレス数です(数Nは、その素因数pごとに、p ^ 2もそれを除算する場合、強力な数と呼ばれます)が、完全なべき数ではありません。アキレス数の例には、72、108、200、288、392、432、500、648、675、800、864、968、972、1125があります。 したがって、入力が108のような場合、6と36の両方がそれを分割し、完全な正方形ではないため、出力はTrueになります。 これを解決するには、次の手順に従います- 関数check_powerful(
-
Pythonで数値が素数階乗素であるかどうかを確認します
数nがあるとすると、nが素数階乗素であるかどうかを確認する必要があります。数がpN#+ 1またはpN#– 1の形式の素数である場合、その数は素数であると言われます。ここで、pN#は、最初のN個の素数の積であるようなpNの素数を示します。 したがって、入力が29の場合、29はpN-1の形式の素数階乗素数であるため出力はTrueになります。N=3の場合、素数階乗は2 * 3 * 5 =30、30-1=29です。 これを解決するには、次の手順に従います- MAX:=100000 prime:=サイズMAXのリストとTrueで埋める arr:=新しいリスト 関数SieveOfEratos
-
C ++ STLのヒープ-make_heap()、push_heap()、pop_heap()、sort_heap()、is_heap、is_heap_until()
このセクションでは、C++STLに存在するヒープデータ構造を確認します。これにより、ヒープへの入力が高速になり、数値を取得すると常に最大の数値になります。つまり、残りの数値の最大数が毎回ポップアウトされます。ヒープの他の要素は、実装に応じて配置されます。ヒープ操作は次のとおりです- make_heap() −これにより、コンテナ内の範囲がヒープに変換されます。 フロント() −これは、最大数であるヒープの最初の要素を返します。 例 理解を深めるために、次の実装を見てみましょう- #include<bits/stdc++.h> using namespace st
-
Pythonで指定されたpostorderからバイナリ検索ツリーを構築します
二分探索木のポストオーダートラバーサルシーケンスがあるとします。これらのシーケンスからツリーを生成する必要があります。したがって、ポストオーダーシーケンスが[9,15,7,20,3]の場合、ツリーは-になります。 ツリーを形成するには、順序付きトラバーサルも必要ですが、二分探索ツリーの場合、順序付きトラバーサルは並べ替えられた形式になります。 手順を見てみましょう- Inorder=ポストオーダートラバーサルのソート済みリスト。 メソッドbuild_tree()を定義します。これは、順序付け、順序付け後-を取ります。 順序リストが空でない場合- root:=p
-
PythonでPostorderとInorderからバイナリツリーを構築する
二分木のインオーダーおよびポストオーダートラバーサルシーケンスがあるとします。これらのシーケンスからツリーを生成する必要があります。したがって、事後順序と順序順のシーケンスが[9,15,7,20,3]と[9,3,15,20,7]の場合、ツリーは-になります。 手順を見てみましょう- メソッドbuild_tree()を定義します。これは、順序付け、順序付け後-を取ります。 順序リストが空でない場合- root:=postorderの最後の値でツリーノードを作成し、その要素を削除します ind:=順序リスト内のルートデータのインデックス ルートの右:=buil
-
PythonのStackを使用して、指定されたポストオーダートラバーサルからBSTを構築します
二分探索木のポストオーダートラバーサルが1つあるとします。そこから二分探索木を見つける必要があります。 したがって、入力が[6、12、10、55、45、15]の場合、出力は これを解決するには、次の手順に従います- 関数solve()を定義します。これには後注文が必要です n:=ポストオーダーのサイズ root:=postorderの最後の要素で新しいツリーノードを作成します stk:=スタック ルートをstkに挿入 i:=n-2 =0の場合、実行 x:=値postorder [i]で新しいノードを作成します stkが空ではなく
-
Pythonの文字列データを使用してPandasでDataFrameを構築する
ここでは、文字列型データを使用してパンダデータフレームを構築する方法を説明します。 Pandasはcsvファイルをサポートしていますが、文字列を使用しても同じことができます。文字列型のデータの場合、1つのラッパーを使用する必要があります。これは、データがcsvリーダーとして取得されるときにシミュレートするのに役立ちます。 ここでは、データを受け取り、セミコロンで区切った文字列を使用しています。 例 理解を深めるために、次の実装を見てみましょう- import pandas as pd from io import StringIO str_data = StringIO("&quo
-
Pythonで指定されたサイズ、合計、要素の上限を使用して、個別の要素配列を作成します
1つのサイズ変数Nがあり、1つの変数SUMもあります。これは、配列で使用可能なすべての要素と、配列に要素がないような別の変数Kの合計です。 Kより大きい場合、配列内のすべての要素が異なる1つの直交配列を見つける必要があります。解決策がない場合は-1を返します。 したがって、入力がN =4、SUM =16 K =9の場合、出力は[1,2,4,9]になります。 これを解決するには、次の手順に従います- minimum_sum:=(N *(N + 1))/ 2 maximum_sum:=(N * K)-(N *(N-1))/ 2 SUMまたはmaximum_sum
-
Pythonでいくつかの共通ノードを持つ2つのソートされたリンクリストから最大合計リンクリストを作成します
ソートされたリンクリストが2つあるとすると、開始ノードから終了ノードまでの最大の合計パスで構成されるリンクリストを作成する必要があります。最終的なリストは、両方の入力リストのノードで構成されている場合があります。 結果リストを作成するときに、交点(リスト内の同じ値を持つ2つのノード)についてのみ、他の入力リストに切り替えることができます。一定量の余分なスペースを使用して解決する必要があります。 したがって、入力が[6,8,35,95,115,125]、[5,8,17,37,95,105,125,135]の場合、出力は[6,8,17,37,95,115,125,135]になります。 これを