Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで任意の都市と駅の間の最大距離を見つける


N個の都市があり、それらに0からN-1までの番号が付けられており、駅が配置されている都市もあるとすると、任意の都市間の最大距離を見つける必要があります。市とその最寄りの駅。駅のある都市は任意の順序で指定できることに注意する必要があります。

したがって、入力がN =6、ステーション=[2,4]の場合、出力は2

になります。

これを解決するには、次の手順に従います-

  • station_present:=サイズNのリスト、Falseで埋める

  • 駅の各都市について、実行します

    • station_present [city]:=True

  • dist:=0、maximum_dist:=ステーションの最小値

  • 0からNの範囲の都市の場合、実行

    • station_present [city]がTrueの場合、

      • maximum_dist:=maximum of(dist + 1)/ 2、maximum_dist

      • dist:=0

    • それ以外の場合

      • dist:=dist + 1

  • maximum_dist、distの最大値を返します

例(Python)

理解を深めるために、次の実装を見てみましょう-

def get_max_dist(N, station):
   station_present = [False] * N
   for city in station:
      station_present[city] = True
   dist, maximum_dist = 0, min(station)
   for city in range(N):
      if station_present[city] == True:
         maximum_dist = max((dist + 1) // 2, maximum_dist)
         dist = 0
      else:
         dist += 1
   return max(maximum_dist, dist)
N = 6
station = [2, 4]
print(get_max_dist(N, station))

入力

6, [2,4]

出力

2

  1. C++で任意の都市と駅の間の最大距離を見つける

    コンセプト 0からN-1までの番号が付けられたNの都市の数と、駅が配置されている都市に関して、私たちのタスクは、任意の都市とその最寄りの駅との間の最大距離を決定することです。駅のある都市は任意の順序で指定できることに注意してください。 入力 numOfCities = 6, stations = [2, 4] 出力 2 入力 numOfCities = 6, stations = [4] 出力 4 次の図は、6つの都市と、駅が緑色で強調表示されている都市を含む最初の例を示しています。したがって、この場合、最も近い駅からの最も遠い距離は2の距離で0です。したがって、最大距離は1です。

  2. Pythonでノードと子孫の違いを見つけるプログラム

    二分木があるとすると、ノードとその子孫の間で最大の絶対差を見つける必要があります。 したがって、入力が次のような場合 その場合、最大の絶対差はノ​​ード8と1の間であるため、出力は7になります。 これを解決するには、次の手順に従います- 関数dfs()を定義します。これはノードを取ります ノードがnullでない場合、 正と負の無限大のリストを返す left:=dfs(ノードの左側) right:=dfs(ノードの右) res:=(left [0]、right [0]の最小値とノードの値、およびleft [1]、right [1]とノードの値の最大値)とのペア ans: