Pythonで空席と空席の間の最大距離を見つけるプログラム
シートと呼ばれる0と1のみのリストがあるとします。ここで、seats[i]は座席を表します。 1の場合は占有され、それ以外の場合は解放されます。少なくとも1つのフリーシートと少なくとも1つの占有シートがあり、フリーシートから最も近い占有シートまでの最大距離を見つける必要があります。
したがって、入力が座席=[1、0、1、0、0、0、1]の場合、座席の座席[4]を占有できるため、出力は2になり、距離は2になります。
>これを解決するには、次の手順に従います-
-
res:=0
-
最後:=-1
-
n:=シートのサイズ
-
0からn-1の範囲のiの場合、実行
-
Seats [i]が1の場合、
-
res:=resの最大値および(最後の場合はi <0、それ以外の場合は(i-last)/ 2のフロア)
-
最後:=i
-
-
-
resと(n-last-1)の最大値を返します
例
理解を深めるために、次の実装を見てみましょう
def solve(seats): res, last, n = 0, -1, len(seats) for i in range(n): if seats[i]: res = max(res, i if last < 0 else (i - last) // 2) last = i return max(res, n - last - 1) seats = [1, 0, 1, 0, 0, 0, 1] print(solve(seats))>
入力
[1, 0, 1, 0, 0, 0, 1]
出力
2
-
Pythonの二分木で2つのノード間の距離を見つけるプログラム
二分木が与えられ、二分木の2つのノード間の距離を見つけるように求められたとします。グラフのように2つのノード間のエッジを見つけ、エッジの数またはそれらの間の距離を返します。ツリーのノードは以下のような構造になっています- data : <integer value> right : <pointer to another node of the tree> left : <pointer to another node of the tree> したがって、入力が次のような場合 そして、その間の距離を見つけなければならないノードは2と8です。その場
-
Pythonでノードと子孫の違いを見つけるプログラム
二分木があるとすると、ノードとその子孫の間で最大の絶対差を見つける必要があります。 したがって、入力が次のような場合 その場合、最大の絶対差はノード8と1の間であるため、出力は7になります。 これを解決するには、次の手順に従います- 関数dfs()を定義します。これはノードを取ります ノードがnullでない場合、 正と負の無限大のリストを返す left:=dfs(ノードの左側) right:=dfs(ノードの右) res:=(left [0]、right [0]の最小値とノードの値、およびleft [1]、right [1]とノードの値の最大値)とのペア ans: