-
Pythonで最長のアナグラムサブシーケンスの長さを見つけるプログラム
2つの小文字の文字列SとTがあるとすると、最長のアナグラムサブシーケンスの長さを見つける必要があります。 したがって、入力がS =helloworld、T =hellorldの場合、出力は8になります これを解決するには、次の手順に従います- c:=新しいマップ、d:=新しいマップ 0からaのサイズの範囲のiの場合、実行 cのa[i]の場合、 c [a [i]]:=c [a [i]] + 1 それ以外の場合 c [a [i]]:=1 0からbのサイズの範囲のiの場合、実行 dのb[i]の場合、 d [b [i]]:=
-
Pythonで最長の連続シーケンスの長さを見つけるプログラム
並べ替えられていない数値の配列があるとすると、連続する要素の最長シーケンスの長さを見つける必要があります。 したがって、入力がnums =[70、7、50、4、6、5]の場合、連続する要素の最長シーケンスは[4、5、6、7]であるため、出力は4になります。したがって、その長さを返します:4。 これを解決するには、次の手順に従います- nums:=numsのすべての一意の要素 max_cnt:=0 numsのnumごとに、実行します num-1がnumsにない場合、 cnt:=0 numがnumsに存在する間、実行します num:=num + 1
-
Pythonで最長の個別のサブリストの長さを見つけるプログラム
numsという番号のリストがあり、そのすべての要素が一意である最も長い連続したサブリストの長さを見つける必要があるとします。 したがって、入力がnums =[6、2、4、6、3、4、5、2]のような場合、一意の要素の最長リストは[6、3、4、5]であるため、出力は5になります。 、2]。 これを解決するには、次の手順に従います- head:=0、dct:=新しいマップ max_dist:=0 各インデックスiとnumsの要素numについて、実行します =headの場合、 ヘッド:=dct [num] + 1 dct [num]:=i ma
-
PythonでKをインクリメントした後、同等の最長のサブリストを見つけるプログラム
numsとkという数のリストがあるとします。ここで、任意の1つの要素を1回インクリメントできる操作について考えてみます。最大でk回の操作を実行できる場合は、等しい要素を含む最長のサブリストを見つける必要があります。 したがって、入力がnums =[3、5、9、6、10、7] k =6のような場合、サブリスト[10、10を取得するために9を1回、6を4回インクリメントできるため、出力は3になります。 、10]。 これを解決するには、次の手順に従います- numsが空の場合、 0を返す wMax:=numsと同じサイズの両端キュー。ペアを挿入します(nums [0]、0)
-
Pythonで二分木の最長の偶数値パスを見つけるプログラム
二分木があるとすると、ツリー内の任意の2つのノード間の偶数の値で構成される最長のパスを見つける必要があります。 したがって、入力が次のような場合 最長のパスが[10、2、4、8、6]であるため、出力は5になります。 これを解決するには、次の手順に従います- ans:=0 関数find()を定義します。これはノードを取ります ノードがnullの場合、 戻り値(-1、-1) leftCnt:=find(ノードの左側)の戻り値の最大値+ 1 rightCnt:=find(ノードの右側)の戻り値の最大値+ 1 ノードの値が偶数の場合、
-
Pythonで最長増加部分列の長さを見つけるプログラム
番号のリストがあるとします。最も長く増加するサブシーケンスの長さを見つける必要があります。したがって、入力が[6、1、7、2、8、3、4、5]の場合、最長増加部分列は[2,3,4,5,6]であるため、出力は5になります。 これを解決するには、次の手順に従います- サイズがnumsと同じであるtailsという配列を作成し、これを0で埋めます。 サイズ:=0 nums配列の各要素xについて- i:=0、j:=サイズ iはjと同じではありませんが、 mid:=i +(j – i)/ 2 tails [mid]
-
Pythonで最も長い交互の不等式要素サブリストの長さを見つけるプログラム
numsと呼ばれるマンバーのリストがあり、連続するすべての数値間の等式関係が小なり記号と大なり記号の間で交互に変化するように、最長のサブリストinnumsの長さを見つけたとします。最初の2つの数値の不平等は、より小さいかより大きい可能性があります。 したがって、入力がnums =[1、2、6、4、5]のような場合、最長の不等式交互サブリストは[2、6、4、5]であり、2 4であるため、出力は4になります。 <5。 これを解決するには、次の手順に従います- 関数get_direction()を定義します。これにはa、bが必要です aがbと同じ場合は0を返し、それ以外の場合は-1
-
Pythonで最長のパリンドローム部分文字列の長さを見つけるプログラム
文字列Sがあるとします。Sで最長の回文部分文字列の長さを見つける必要があります。文字列Sの長さは1000であると想定しています。したがって、文字列が「BABAC」の場合、最長の回文部分文字列は「BAB」です。長さは3です。 これを解決するには、次の手順に従います- 文字列の長さと同じ次数の正方行列を1つ定義し、Falseで埋めます 主対角要素をtrueに設定し、DP [i、i] =0からorder–1までのすべてのiに対してTrue start:=0 範囲2からS+1の長さのlの場合 0からSの長さまでの範囲のiの場合– l + 1 終了:=i + l
-
Pythonで指定された条件で最長のサブリストの長さを見つけるプログラム
サブリストの最大値です。 6として。 これを解決するために、次の手順に従います- ret:=0 2つの両端キューminqとmaxqを定義します l:=0、r:=0 r
-
Pythonで2つの異なる要素を持つ最長の部分文字列の長さを見つけるプログラム
文字列sがあるとすると、最大2つの異なる文字を含む最長の部分文字列の長さを見つける必要があります。 したがって、入力がs =xyzzyのような場合、出力は4になります。これは、 yzzyが、最大2文字の一意の文字を含む最長のサブストリングであるためです。 これを解決するために、次の手順に従います- start:=0 c:=地図 ans:=0 0からsのサイズまでの範囲で終了する場合は、実行してください c [s [end]]:=c [s [end]] + 1 2の場合、実行 c [s [start]]:=c [s [start]]-1
-
Pythonでバイナリツリーのルートからリーフまでの最長の合計パスの合計を見つけるプログラム
二分木があるとすると、ルートからリーフノードまでの最長パスの合計を見つける必要があります。同じ長いパスが2つある場合は、合計が大きいパスを返します。 したがって、入力が次のような場合 その場合、出力は20になります。 これを解決するには、次の手順に従います- 関数rec()を定義します。これには時間がかかります currがnullの場合、 return(0、0) 大きい:=rec(currの左側)の最大値、rec(currの右側) ペアを返します(bigger [0] + 1、bigger [1] + currの値) メインの方法から、次のよ
-
Pythonで不可逆ランレングスエンコーディングの最小長を見つけるプログラム
小文字の文字列sと別の値kがあるとします。ここで、繰り返される連続する文字をカウントおよび文字として配置することにより、文字列に対してランレングスエンコーディングを実行する操作について考えてみます。したがって、文字列が「aaabbc」のような場合、「3a2bc」としてエンコードされます。ここでは、「c」の代わりに「1c」を付けません。これは、連続して1回しか表示されないためです。したがって、最初にs内のk連続文字を削除してから、結果のrun-lengthencodingの可能な最小の長さを見つけることができます。 したがって、入力がs =xxxxxyyxxxxxzzxxx、k =2の場合、2
-
Pythonの二分木で2つの要素に共通する祖先を見つけるプログラム
二分木があり、2つの数値aとbもあるとすると、aとbを子孫として持つ最下位ノードの値を見つける必要があります。ノードはそれ自体の子孫になる可能性があることに注意する必要があります。 したがって、入力が次のような場合 a =6、b =2の場合、出力は4になります。 これを解決するには、次の手順に従います- メソッドsolve()を定義します。これはルートを取り、a、b ルートがnullの場合、 -1を返す ルートの値がaまたはbの場合、 ルートの戻り値 左:=solve(ルートの左、a、b) right:=resolve(right
-
Pythonで文字列回文を作成するために必要な最小文字数をチェックするプログラム
文字列sがあるとすると、文字列が回文になるように挿入する必要のある最小文字数を見つける必要があります。 したがって、入力がs =madの場合、出力は2になります。これは、amを挿入してmadamを取得できるためです。 これを解決するには、次の手順に従います- 関数dp()を定義します。これにはi、jが必要です =jの場合、 0を返す s[i]がs[j]と同じ場合、 dp(i + 1、j-1)を返す それ以外の場合 dp(i + 1、j)およびdp(i、j-1)+1の最小値を返します メインの方法から、次のようにします dp(
-
Pythonのサブリスト合計操作を使用して1つのリストを他のリストと同一に変換するプログラム
2つのリストl1とl2があるとすると、この操作を繰り返し適用してリストを等しくする必要があります-サブリストを選択し、サブリスト全体をその合計に置き換えます。最後に、上記の操作を適用した後、可能な限り長い結果のリストのサイズを返します。解決策がない場合は、-1を返します。 したがって、入力がl1 =[1、4、7、1、2、10] l2 =[5、6、1、3、10]の場合、この操作を次のように実行するかのように、出力は4になります。次の- l1のサブリスト[1、4]を取得すると、[5、7、1、2、10]が得られます l1のサブリスト[1、2]を取得すると、[5、7、3、10]が得られます
-
Pythonで変更を加えるために必要なコインの数を見つけるためのプログラム
異なる金種(1,5,10,25)のコインと合計金額があるとします。その量を構成するために必要なコインの最小数を計算するために、1つの関数を定義する必要があります。したがって、入力が64の場合、出力は7になります。これは、25 + 25 + 10 + 1 + 1 + 1 + 1=64を使用して形成されます。 これを解決するには、次の手順に従います- 金額=0の場合、0を返します の場合、-1を返します サイズが+1のdpという1つの配列を定義し、これに-1を入力します for i in range coins array dp – 1の長さの場合、次の部分をスキップして、次の反復に進み
-
Pythonで与えられたコインのセットで変更を加えるために必要なコインの数を見つけるためのプログラム
異なる金種のコインと合計金額があるとします。その量を構成するために必要なコインの最小数を計算するために、1つの関数を定義する必要があります。コインの組み合わせでその金額に対応できない場合は、-1を返します。したがって、入力が[1,2,5]で、金額が64の場合、出力は14になります。これは12 * 5 + 2 + 2=64を使用して形成されます。 これを解決するには、次の手順に従います- 金額=0の場合、0を返します の場合、-1を返します サイズが+1のdpという1つの配列を定義し、これに-1を入力します for i in range coins array dp – 1の長さの場合
-
Pythonでペアワイズ隣接和を小さくするプログラム
numsなどの非負の数と非負の値kのリストがあるとします。ここで、numsで1つの正のアンバーを選択し、それを1減らす操作を実行できると仮定します。リスト内の隣接する値のすべてのペアの合計が<=kになるように、必要な操作の最小数を見つける必要があります。答えが非常に大きい場合は、結果mod 10 ^ 9+7を返します。 したがって、入力がnums =[4、6、2、5]、k =6のような場合、リストを[3、3、1、4]にデクリメントできるため、出力は5になります。 5デクリメントの。ここで、隣接するすべてのペアの合計は<=6です。 これを解決するには、次の手順に従います- m =10 ^
-
PythonでK個のサブリストを増やした後に最小値を最大化するようにプログラムする
numsと呼ばれる数値のリストと2つの値、sizeとkがあるとします。ここで、長さサイズの連続したサブリストを取得し、すべての要素を1つずつインクリメントする操作があるとします。この操作はk回実行できます。可能な限り最大の最小値を、numsで見つける必要があります。 したがって、入力がnums =[2、5、2、2、7]、size =3、k =2の場合、[2、5、2]を増やして[を取得できるため、出力は3になります。 3、6、3、2、7]次に[6、3、2]をインクリメントして、[3、7、4、3、7]を取得します。最小値は3 これを解決するには、次の手順に従います- 関数possible(
-
Pythonで交換した後、同等のペアの数を最大化するプログラム
同じ長さの番号Aのリストと番号Bのリストがあるとします。また、各要素が[i、j]の形式である数値Cの2Dリストがあります。これは、A[i]とA[j]を何度でも交換できることを示しています。スワッピング後、A [i] =B[i]となるペアの最大数を見つける必要があります。 したがって、入力がA =[5、6、7、8]、B =[6、5、8、7]、C =[[0、1]、[2、3]]の場合、出力はA[0]をA[1]と交換し、次にA[2]をA[3]と交換できるため、4になります。 これを解決するには、次の手順に従います- N:=Aのサイズ グラフ:=指定されたエッジを双方向にアタッチすることによるグ