-
PythonでリンクリストのK番目の最後のノードを見つけるプログラム
単一リンクリストがあるとすると、k番目の最後のノード(0インデックス)の値を確認する必要があります。これはシングルパスで解決する必要があります。 したがって、入力がnode =[5,4,6,3,4,7]、k =2のようである場合、最後から2番目の(インデックス3)ノードの値は3であるため、出力は3になります。 これを解決するには、次の手順に従います- klast:=ノード 最後:=ノード 0からkの範囲のiの場合、実行 最後:=最後の次 最後の次はnullではありませんが、実行してください 最後:=最後の次 klast:=klastの次
-
Pythonの要素のリストからk番目の欠落している数を見つけるプログラム
numsと整数kと呼ばれるソートされた一意の番号のリストがあるとすると、指定されたリストの最初の要素からk番目の欠落している番号を見つける必要があります。 したがって、入力がnums =[5,6,8,10,11]、k =1の場合、9は2番目(インデックス1)の欠落している数値であるため、出力は9になります。 これを解決するには、次の手順に従います- 1からnumsのサイズの範囲のiの場合、実行します diff:=nums [i]-nums [i-1]-1 =diffの場合、 k:=k-差分 それ以外の場合 nums [i-1] + k + 1を返し
-
Pythonの二分探索木でk番目に小さい要素を見つけるプログラム
二分探索木があり、別の整数kがあるとすると、ツリー内でk番目に小さい値を見つける必要があります。 したがって、入力が次のような場合 k =3の場合、出力は7になります これを解決するには、次の手順に従います- スタック:=空のスタック i:=0 ans:=-1 スタックが空でないか、ルートがnullでない場合は、実行してください ルートがnullでない場合は、実行してください ルートをスタックにプッシュする ルート:=ルートの左側 v:=スタックから要素をポップ iがkと同じ場合、 ans:=vの値 ループか
-
PythonでK個の一意の文字を含む文字列を形成するために必要な最小限の機会を見つけるためのプログラム
小文字のアルファベット文字の文字列sと別の数字kがあるとすると、結果の文字列が最大k個の異なる文字を持つように、文字列に必要な変更の最小数を見つける必要があります。この場合、変更は実際には1つの文字を他の文字に変更することです。 したがって、入力がs =wxxyyzzxx、k =3の場合、出力は1になります。これは、文字 wを削除して、3つの異なる文字(x、y、およびz)を取得できるためです。 これを解決するには、次の手順に従います- count:=sの各文字とその頻度のマップ sv:=頻度値のソートされたリスト ans:=0 0から(カウントのサイズ)の範囲のi
-
Pythonの単語リストからアナグラムの最大のグループを見つけるプログラム
文字列の単語のリストがあるとすると、すべてのアナグラムをグループ化して、最大のグループ化のサイズを返す必要があります。 したがって、入力がwords =[xy、 yx、 xyz、 zyx、 yzx、 wwwww]の場合、出力は[xyz、zyxのように3になります。 、yzx]は最大のグループです。 これを解決するには、次の手順に従います- lookup:=新しいマップ、最初は空 res:=0 言葉で言うと、iごとに p:=辞書式順序でiを並べ替える pがルックアップの場合はカウントを増やし、そうでない場合は1 res:=resとlookupの最大値[
-
Pythonで最大アイテムと最小アイテムの差が最小になるkサイズのリストを見つけるプログラム
numsと整数kという数値のリストがあるとすると、numsから要素を選択して、リスト内の最大の整数と最小の整数の差ができるだけ小さくなるように、サイズkのリストを作成する必要があります。そして、この違いを返します。 したがって、入力がnums =[3、11、6、2、9]、k =3の場合、作成できる最良のリストは[2、3、6]であるため、出力は4になります。 これを解決するには、次の手順に従います- リスト番号を並べ替える ls:=新しいリスト 0からnumsのサイズまでの範囲のiの場合-k+1、do lsの最後にnums[i+ k --1]--nums[i]を挿入
-
Pythonで循環サブリストの最大合計を見つけるプログラム
numsの数のリストがあると仮定し、numsの開始と終了が隣接しているnumsの循環リストを考えてみましょう。循環リストで空でないサブリストの最大合計を見つける必要があります。 したがって、入力がnums =[2、3、-7、4、5]のような場合、合計が14になるサブリスト[4、5、2、3]を取得できるため、出力は14になります。 これを解決するには、次の手順に従います- max_sum:=負の無限大、cur_max:=0 min_sum:=正の無限大、cur_min:=0 numsのnumごとに、実行します cur_max:=numの最大値とcur_max+ n
-
Pythonで最大の合計を持つ連続したサブリストの合計を見つけるプログラム
配列Aがあるとします。最大合計を持つ連続したサブリストを見つけ、その合計を返す必要があります。したがって、配列AがA =[-2,1、-3,4、-1,2,1、-5,4]のようである場合、合計は6になります。サブ配列は[4、-1になります。 2、1]。 これを解決するために、動的計画法のアプローチを使用してみます。 Aのサイズと同じ配列dpを定義し、0で埋めます dp [0]:=A [0] for i:=1からAのサイズ– 1 dp [i]:=最大dp [i – 1] +A[i]およびA[i] dpで最大値を返す 理解を深めるために、次の実装を見てみま
-
Pythonでリストの隣接していない要素の最大の合計を見つけるプログラム
numsと呼ばれる数値のリストがあるとすると、隣接していない数値の最大の合計を返す関数を定義します。ここでは、数値は0または負の数にすることができます。 したがって、入力が[3、5、7、3、6]の場合、出力は16になります。これは、get16に3、7、および6を取ることができるためです。 これを解決するために、次の手順に従います- numsのサイズが<=2の場合、 最大数を返す noTake:=0 取る:=nums [0] 1からnumsのサイズの範囲のiの場合、実行します take:=noTake + nums [i] noTake:=
-
Pythonのバイナリツリーで2つのノード間のパスの最大合計を見つけるプログラム
二分木があるとしましょう。任意の2つのノード間の任意のパスの最大合計を見つける必要があります。 したがって、入力が次のような場合 ノードが[12,13,14,16,7]であるため、出力は62になります。 これを解決するには、次の手順に従います- 関数utils()を定義します。これが定着します ルートがnullの場合、 0を返す l:=utils(ルートの左側) r:=utils(ルートの権利) max_single:=最大値(lとrの最大値)+ルートの値)とルートの値 max_top:=max_singleの最大値とl+r+ルートの値
-
Pythonで各行と列が異なる要素を保持する正方形を埋めることができるかどうかを確認するプログラム
0からnまでの値を含む1つのn×n行列があるとします。ここで、0は塗りつぶされていない正方形を表します。空の正方形を塗りつぶして、各行と各列に1からnまでのすべての数字が1回だけ表示されるかどうかを確認する必要があります。 したがって、入力が次のような場合 0 0 2 2 0 1 1 2 3 行列をに設定できるため、出力はTrueになります。 3 1 2 2 3 1 1 2 3 これを解決するには、次の手順に従います- 関数find_empty_cell()を定義します。
-
Pythonですべての葉が同じレベルにあるかどうかを確認するプログラム
二分木があるとしましょう。すべての葉が同じレベルにあるかどうかを確認する必要があります。 したがって、入力が次のような場合 その場合、出力はTrueになります これを解決するには、次の手順に従います- 関数dfs()を定義します。これは根を下ろします、d ルートがnullでない場合、 ルートの左側がnullで、ルートの右側がnullの場合、 深さの終わりにdを挿入します それ以外の場合 dfs(ルートの左側、d + 1) dfs(ルートの右、d + 1) メインの方法から、次のようにします- 深さ:=新しいリスト
-
Pythonでツリーの左端の最深ノードを見つけるプログラム
二分木があるとしましょう。最も深いノードの値を見つける必要があります。最も深いノードが複数ある場合は、左端の最も深いノードを返します。 したがって、入力が次のような場合 4と7が最も深いが、4が最も残っているため、出力は4になります。 これを解決するには、次の手順に従います- queue:=1つのノードルートを持つキュー。 left_max:=ルートの値 キューのサイズが0より大きい場合は、実行してください level_size:=キューのサイズ 0からlevel_sizeの範囲のiの場合、実行 temp:=キューの最初の要素を削除します
-
Pythonで最も長いバランスの取れたサブシーケンスの長さを見つけるプログラム
括弧「(」および「)」を含む文字列sがあるとすると、バランスの取れた括弧の最長のサブシーケンスの長さを見つける必要があります。 したがって、入力がs =())(()(の場合、出力は4になります。これは、 ()()のようなサブシーケンスを取ることができるためです。 これを解決するには、次の手順に従います- res:=0 n:=sのサイズ close:=0 n-1から0の範囲のiの場合、1ずつ減らします。 s[i]が)と同じ場合、 close:=close + 1 それ以外の場合 0の場合、 close:=close-1 r
-
Pythonで二分木レベルを交互にトラバースするプログラム
二分木があるとすると、左から右、右から左に交互に各レベルの値を表示する必要があります。 したがって、入力が次のような場合 その場合、出力は[5、-10、4、-2、-7、15]になります。 これを解決するには、次の手順に従います- ルートがnullの場合、 新しいリストを返す s1:=リストは最初にルートを挿入します s2:=新しいリスト res:=新しいリスト s1が空でないか、s2が空でない場合は、実行してください s1が空でない間、実行します node:=s1から最後の要素を削除する ノードの左側がnullでない場合、
-
Pythonでレベルオーダーの二分木トラバーサルをリンクリストに変換するプログラム
二分探索木があるとすると、レベルオーダートラバーサルを使用してそれを単一リンクリストに変換する必要があります。 したがって、入力が次のような場合 その場合、出力は[5、4、10、2、7、15、]になります。 これを解決するには、次の手順に従います- head:=新しいリンクリストノード currNode:=head q:=値rootのリスト qが空でない間、実行します curr:=qから最初の要素を削除 currがnullでない場合、 currNodeの次:=currの値を持つ新しいリンクリストノード currNode:=currN
-
Pythonでバイナリ検索ツリーへのリンクリストを作成するプログラム
サイズnのソートされたリンクリストノードがあるとすると、最小のk =floor(n / 2)の値をルートとして設定することにより、バイナリ検索ツリーを作成する必要があります。次に、k番目のノードの左側にあるリンクリストを使用して、左側のサブツリーを再帰的に構築します。そして、k番目のノードの右のリンクリストを使用して、右のサブツリーを再帰的に構築します。 したがって、入力が[2,4,5,7,10,15]の場合、出力はになります。 これを解決するために、次の手順に従います- メソッドsolve()を定義します。これはノードを取ります ノードがnullの場合、 null
-
Pythonでカラーリストを分割するプログラム
色の文字列のリストがあり、これらに「赤」、「緑」、「青」が含まれている場合、赤が緑の前に、緑が青の前になるようにリストを分割する必要があります。 したがって、入力がcolors =[blue、 green、 blue、 red、 red]の場合、出力は[red、red、green、 青、青] これを解決するには、次の手順に従います- 緑:=0、青:=0、赤:=0 strsの文字列ごとに、実行します 文字列が「赤」と同じ場合、 strs [blue]:=blue 青:=青+1 strs [green]:=green 緑:=緑+1 s
-
Pythonで1回だけ出現する要素を見つけるプログラム
numsと呼ばれる数値のリストがあり、1回発生する1つの値を除いて、各値が正確に3回発生するとします。ユニークな価値を見つけなければなりません。不定の空間を解決する必要があります。 したがって、入力がnums =[3、3、3、8、4、4、4]の場合、出力は8になります。 これを解決するには、次の手順に従います- m:=異なる値とその頻度を持つマップ 最小頻度で値を返す 理解を深めるために、次の実装を見てみましょう- 例 from collections import Counter class Solution: def solve(self,
-
Pythonで指定されたリストの右側にある小さい要素の数を返すプログラム
numsという番号のリストがあるとすると、新しいリストを作成します。新しいリストの各要素は、元の入力リストのその要素の右側にある小さい要素の数です。 したがって、入力がnums =[4、5、9、7、2]のようである場合、4の右側に1つの小さい要素があるため、出力は[1、1、2、1、0]になります。は5の右側に1つの小さい要素があり、9の右側に2つの小さい要素があり、7の右側に1つの小さい要素があり、2の右側に小さい要素はありません。 これを解決するには、次の手順に従います- res:=新しいリスト、inc:=新しいリスト numsが空ではない場合は、実行してください nu