-
Pythonですべてのセルに必要な操作の数を同じ色にカウントするプログラム
2次元行列Mがあるとします。各セルにその色を表す値が含まれ、同じ色の隣接するセル(上、下、左、右)がグループ化されます。ここで、1つのグループのすべてのセルをある色に設定する操作について考えてみます。次に、すべてのセルが同じ色になるように、必要な操作の最小数を最後に見つけます。また、色が変換されると、再度設定することはできません。 したがって、入力が次のような場合 2 2 2 2 1 1 1 1 2 3 2 1 次に、出力は2になります。これは、グループを2で色として1に塗りつぶし、次に3を1で塗りつぶ
-
Pythonでターゲットを作成するために列を反転する操作の最小数をカウントするプログラム
行と列の数が同じである行列Mとターゲット行列Tがあるとします。ここで、行列の特定の列を反転して、すべての1が0に変換され、すべての0が1に変換される操作を想定します。したがって、行列の行を無料で並べ替えることができる場合は、MをTに変換するために必要な操作の最小数を見つけます。解決策がない場合は、-1を返します。 したがって、入力がM =のような場合 0 0 1 0 1 1 T = 0 1 1 0 1 1 最初に行を-に並べ替えると、出力は1になります。 0 0 1
-
Pythonで二分木が完成しているかどうかをチェックするプログラム
二分木があるとしましょう。これが完全な二分木であるかどうかを確認する必要があります。完全な二分木でわかっているように、レベルはノードで埋められますが、最後のレベルのノードと最後のレベルのすべてのノードが可能な限り左にある可能性があります。 したがって、入力が次のような場合 その場合、出力はTrueになります これを解決するために、次の手順に従います- q:=両端キュー qの最後にルートを挿入 フラグ:=False qが空でない間、実行します temp:=qの左側から削除した後の要素 tempがnullの場合、 フラグ:=True
-
Pythonで、どの都市からでも、どの都市からでも訪問できるかどうかを確認するプログラム
範囲[0、n)の数値として表されたn個の都市があり、ある都市を別の都市に接続する一方通行の道路のリストもあるとします。どの都市からどの都市にも到達できるかどうかを確認する必要があります。 したがって、入力がn =3の場合、roads =[[0、1]、[0、2]、[1,0]、[1,2]、[2,0]、[2,1]] 、0から1および1から0に移動できるため、出力はTrueになります これを解決するために、次の手順に従います- 関数dfs()を定義します。これには、i、visited、gが必要です。 iを訪問済みとしてマーク g [i]のjごとに、実行 jにアクセスしない場
-
文字列をチェックするプログラムに、Pythonで連続して降順の文字列が含まれているかどうか
いくつかの数字を含む文字列sがあるとすると、連続して降順の整数が含まれているかどうかを確認する必要があります。 したがって、入力がs =99989796の場合、この文字列は[99,98,97,96] を保持しているため、出力はTrueになります。 これを解決するために、次の手順に従います- 関数helper()を定義します。これにはpos、prev_numが必要です posがnと同じ場合、 Trueを返す num_digits:=prev_numの桁数 num_digits-1からnum_digitsの範囲のiの場合、実行 s[インデックス位置から位
-
Pythonで一意の配列の連続する間隔を見つけるプログラム
numsと呼ばれる一意の番号のリストがあるとします。並べ替えられた数値の2D行列を見つける必要があります。各リストは、数値が連続している数値を要約した包括的区間を表します。 したがって、入力がnums =[10、11、12、15、16、17、28、30]のような場合、出力は[[10、12]、[15、17]、[28、28]になります。 、[30、30]]、リスト[10から12]のように、[15から17]は隣接しており、28と30があり、[28から28]と[30から30]として表されます。 これを解決するために、次の手順に従います- リスト番号を並べ替える numsの最後に無限大を
-
一意の二分探索木の数をカウントするプログラムは、Pythonで0からnの値で形成できます
1つの数nがあるとすると、[0、n)からの数で生成できる一意のBSTの数を見つける必要があります。答えが非常に大きい場合、結果は10 ^ 9 + 7になります。 したがって、入力がn =3の場合、出力は5になります これを解決するには、次の手順に従います- 数値:=1 denom:=n + 1 1からnの範囲のiについては、 numer:=numer * n + i numer:=numer mod m denom:=denom * i denom:=denom mod m numer:=numer *(denom ^(m-2))mod m ret
-
Pythonで括弧のバランスが取れているかどうかをチェックするプログラム
括弧「(」と「)」で構成される文字列sがあるとします。括弧のバランスが取れているかどうかを確認する必要があります。 したがって、入力がs =(()())(())のような場合、出力はTrueになります これを解決するには、次の手順に従います- num_open:=0 sの各文字cについて、 cが)と同じ場合、 num_open <0の場合、 num_open:=num_open-1 それ以外の場合、 Falseを返す それ以外の場合、 num_open:=num_open + 1 num_openの逆を返す 理解を深めるために、次の実装を見てみましょ
-
Pythonでさまざまな角かっこがバランスが取れていて整形式であるかどうかを確認するプログラム
一連の角かっこ(丸かっこ、中かっこ、四角)があるとすると、角かっこがバランスが取れている(整形式)かどうかを確認する必要があります。 したがって、入力がs =([()()] {[]})()の場合、出力はTrueになります これを解決するには、次の手順に従います- スタック:=新しいリスト d:=キーと値のペアを持つハッシュマップ(}、{)、()、()、(]、[) sの各文字cについて、 cが}])のいずれかである場合、 スタックが空であるか、スタックの最上位がd [c]と同じでない場合、 Falseを返す スタックからポップ それ以外の場合、 cをスタックにプッシュします
-
Pythonの範囲内にないすべてのノードをBSTから削除するプログラム
低値と高値の2つの値を持つBSTがあるとすると、[低、高](両端を含む)の間にないすべてのノードを削除する必要があります。 したがって、入力が次のような場合 低=7高=10の場合、出力はになります。 これを解決するには、次の手順に従います- 関数solve()を定義します。これは根を下ろし、低く、高くなります rootがnullの場合、 戻る returnsolve(ルートの右、低、高) ルートのデータが高い場合は returnsolve(ルートの左側、低、高) ルートの権利:=solve(ルートの権利、低、高) ルートの左側:=solve(ルートの左側
-
Pythonで二分木がBSTであるかどうかをチェックするプログラム
二分木があるとしましょう。二分探索木かどうかを確認する必要があります。私たちが知っているように、BSTには次のプロパティがあります- 左側のサブツリーのすべてのノードが現在のノード値よりも小さい 右側のサブツリーのすべてのノードが現在のノード値よりも大きい これらのプロパティは、すべてのノードに対して再帰的に保持されます したがって、入力が次のような場合 その場合、出力はTrueになります これを解決するには、次の手順に従います- x:=ツリー要素の順序どおりの走査シーケンスのリスト xがソートされている場合、 trueを返す falseを返す 理解を深めるために
-
Pythonで1つのスワップで辞書式に最小の文字列を見つけるプログラム
文字列sがあるとすると、指定された文字列sの2つの文字間で最大1つのスワップを実行できる場合に、辞書式順序で最小の文字列を見つける必要があります。 したがって、入力が「zyzx」のような場合、出力は「xyzz」になります これを解決するには、次の手順に従います- temp:=サイズsの配列で、0で埋めます m:=sのサイズ-1 s -1から-1の範囲サイズのiの場合、1ずつ減らします。 s [i]
-
Pythonと同じ値を持つリンクリストのすべてのノードを削除するプログラム
単一のリンクリストがあり、1つのターゲットがある場合、値がターゲットと同じであるすべてのノードを削除した後、同じリンクを返す必要があります。 したがって、入力が[5,8,2,6,5,2,9,6,2,4]の場合、出力は[5、8、6、5、9、6、4]になります。 これを解決するには、次の手順に従います- ヘッド:=ノード nodeとnode.nextがnullでない場合は、 次のノードの値はターゲットと同じですが、 次のノード:=次のノード node:=ノードの次 ヘッドの値がターゲットと同じである場合、 次の頭に戻る それ以外の場合、 リターンヘッド 理解を深める
-
Pythonで2進数を表すリンクリストを10進数に変換するプログラム
単一リンクリストがあるとします。リンクリストは、最上位桁が最初の2進数を表しているため、10進数として返す必要があります。 したがって、入力が[1,0,1,1,0]の場合、出力は22になります。 これを解決するには、次の手順に従います- l:=新しいリスト ノードがnullでない場合は、 lの最後にノードの値を挿入 node:=ノードの次 k:=0、v:=0 範囲サイズがl-1から0のiの場合、1ずつ減らします。 l [i]が1と同じ場合、 v:=v + 2 ^ k k:=k + 1 return v 理解を深めるために、次の実装を見てみましょう-
-
リストの各要素とPythonで指定された値を使用して指定された操作を実行するプログラム
numsという数値のリストがあり、「+」、「-」、「/」、「*」などの演算子を表す別の文字列opもあり、別の値valも指定されている場合、 valを使用してnumsで数値を計算し、結果を返します。 したがって、入力が[5,3,8]の場合、出力は[15、9、24]になります。 これを解決するには、次の手順に従います- res:=新しいリスト numsの各iについて、 opが+と同じ場合、 resの最後にi+valを挿入 それ以外の場合、opが-と同じ場合、 resの最後にi-valを挿入 それ以外の場合、opが*と同じ場合、 resの最後にi*valを挿入 それ以外の場合、
-
Pythonで特定の操作を実行してすべての要素を等しくするプログラム
numsと呼ばれる数値のリストを指定したとすると、値を等しくしたいとします。次に、リストから1つの要素を選択し、1つおきの値をインクリメントする操作を行います。要素の値を等しくするために必要な操作の最小数を見つける必要があります。 したがって、入力が[2、4、5]の場合、出力は5になります。 これを解決するには、次の手順に従います- min_val:=最小数 s:=0 numsの各numについて、実行します s:=s +(num --min_val) return s 理解を深めるために、次の実装を見てみましょう- 例 class Solution:
-
Pythonの左側で各要素を最小の用語に置き換えるプログラム
numsと呼ばれる数値のリストがあるとすると、すべてのnums[i]をiの左側にある最小の要素に置き換える必要があります。 nums[0]を0に置き換える必要があります。 したがって、入力が[15、7、9、16、12、25]の場合、出力は[0、15、7、7、7、7]になります。 これを解決するには、次の手順に従います- numsが空の場合、 新しいリストを返す j:=nums [0] nums [0]:=0 範囲1からnums-1のサイズのiの場合、do k:=nums [i] nums [i]:=j j:=最小のj、k 数値を返す 理解を深めるために
-
Pythonの文字列のリストから最長の共通プレフィックスを見つけるプログラム
小文字の文字列のリストがあるとすると、最も長い共通プレフィックスを見つける必要があります。 したがって、入力が[antivirus、 anticlockwise、 antigravity]の場合、出力は antiになります。 これを解決するには、次の手順に従います- リストの単語をアルファベット順に並べ替える プレフィックス:=新しいリスト フラグ:=0 0から単語のサイズ[0]までの範囲のiの場合、実行 単語のjごとに、 j [i]がプレフィックスの最後の要素と同じでない場合、 プレフィックスから最後の要素を削除 フラグ:=1 ループから抜け出す フラグが1と同じ場合
-
Pythonで連続する共通文字を含む部分文字列の長さを見つけるプログラム
文字列sがあるとすると、同じ文字列を持つ最長の部分文字列の長さを見つける必要があります。 したがって、入力が「abbbaccabbbba」のような場合、4つの連続したbがあるため、出力は4になります。 これを解決するには、次の手順に従います- sのサイズが0の場合、 0を返す s:=s連結空白スペース ct:=1、tem:=1 範囲0からs-2のサイズのiの場合、実行 s[i]がs[i+ 1]と同じ場合、 tem:=tem + 1 それ以外の場合、 ct:=temとctの最大値 tem:=1 return ct 理解を深めるために、次の実装を見て
-
Pythonで文字を交換して、同じ長さの2つの文字列を等しくするようにプログラムします
長さnの2つの文字列sとtがあるとします。 sから1つの文字を取得し、tから別の文字を取得してそれらを交換できます。無制限の数のスワップを行うことができます。 2つの文字列を等しくすることが可能かどうかを確認する必要があります。 したがって、入力がs =xy、t =yxの場合、出力はTrueになります これを解決するには、次の手順に従います- st:=sとtを連結した後に文字列を並べ替える 範囲0からst-1のサイズのiの場合、2ずつ増やします。 st[i]がst[i+ 1]と同じでない場合、 Falseを返す Trueを返す 理解を深めるために、次の実装を見てみましょう-