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

Pythonでより良いビューを持つ建物を見つけるためのプログラム


さまざまな建物の高さを含む配列が提供されているとします。建物は一列に並んでおり、他の高層ビルに遮られていない方が見晴らしが良くなります。したがって、高さを含む配列が提供された場合、他の高層ビルがない建物を見つけて、それらからの視界を遮る必要があります。インデックスは、基準を満たす配列から返されます。

したがって、入力がheight =[5、6、8、7]のような場合、出力は[2、3]になります。アレイインデックス0および1の建物は、インデックス2の建物によって遮られています。位置2の高い建物は、位置3の短い建物の後ろにあるため、インデックス2および3の建物はブロックされません。

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

  • res:=新しいリスト
  • h:=0
  • iの範囲(高さ-1のサイズ)から-1の場合、1ずつ減らします。
    • heights [i]> hの場合、
      • resの最後にiを挿入
      • h:=高さ[i]
  • リスト解像度の逆を返します

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

def solve(heights):
   res, h = [], 0
   for i in range(len(heights) - 1, -1, -1):
      if heights[i] > h:
         res.append(i)
         h = heights[i]
   return res[::-1]

print(solve([5, 6, 8, 7]))

入力

[5, 6, 8, 7]

出力

[2, 3]

  1. 市民がPythonの市場にアクセスできるようにするための最小コストを見つけるためのプログラム

    n個の都市とm個の都市を結ぶ道路があるとします。人々の市民は彼らが彼らの商品を買うことができる市場を必要としています。現在、都市には市場がなく、都市間の道路が建設中です。次の場合、2つの都市間に双方向道路を建設できます。(i)都市に市場が含まれている。 (ii)市場がある道路で都市を訪れることができます。道路を建設する費用はxであり、市場を建設する費用はyであり、それらは与えられます。各都市の市民に市場へのアクセスを提供するための最小コストを見つける必要があります。配列「cities」には、道路で接続できる都市に関する情報が含まれています。 したがって、入力がn =4、m =3、x =1、y

  2. グラフがPythonのすべての人によってトラバース可能かどうかを確認するプログラム

    0からn-1までの番号が付けられたn個の頂点を含むグラフが与えられたとします。グラフは無向であり、各エッジには重みがあります。グラフには3種類の重みを設定でき、各重みは特定のタスクを示します。グラフをトラバースできるのは、ジャックとケーシーの2人です。エッジの重みが1の場合、ジャックはグラフをトラバースできます。重みが2の場合、ケーシーはグラフをトラバースできます。エッジの重みが3の場合、両方がグラフをトラバースできます。グラフを両方でトラバース可能にするために必要なエッジをすべて削除する必要があります。ジャックとケーシー。グラフをトラバース可能にするために削除するエッジの数を返します。トラバ