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

Pythonで最長のチェーンを形成するボックスの数を見つけるプログラム?


ボックスのリストがあるとします。ここでは、各エントリに2つの値[start、end](start

したがって、入力がブロック=[[4、5]、[5、6]、[4、8]、[1、2]、[2、4]]のような場合、出力は4になります。チェーンを形成できます:[1、2]、[2、4]、[4、5]、[5、6]

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

  • ボックスが空の場合、

    • 0を返す

  • リストボックスを並べ替える

  • dic:=空のマップ

  • ボックス内の開始sと終了eごとに、実行します

    • dic [e]:=dic[e]とdic[s]の最大値+1

  • dicのすべての値のリストの最大値を返す

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

import collections

class Solution:
   def solve(self, boxes):
      if not boxes:
         return 0
      boxes.sort()
      dic = collections.defaultdict(int)
      for s, e in boxes:
         dic[e] = max(dic[e], dic[s] + 1)
      return max(dic.values())

ob = Solution()
boxes = [
   [4, 5],
   [5, 6],
   [4, 8],
   [1, 2],
   [2, 4]
]
print(ob.solve(boxes))

入力

[[4, 5],
[5, 6],
[4, 8],
[1, 2],
[2, 4] ]

出力

4

  1. Pythonでgodownに入れるボックスの数を見つけるためのプログラム

    整数を含む2つの配列があるとします。 1つのリストには、いくつかのユニット幅ボックスの高さが含まれ、別の配列には、godownの部屋の高さが含まれます。部屋には0...nの番号が付けられ、部屋の高さは配列godownのそれぞれのインデックスに示されます。ゴダウンに押し込める箱の数を調べなければなりません。いくつかの点に注意する必要があります ボックスを重ねることはできません。 ボックスの順序は変更できます。 ボックスは左から右にのみゴダウンに入れられます。 ボックスが部屋の高さよりも高い場合、そのボックスとその右側のすべてのボックスをゴダウンに押し込むことはできません。

  2. リスト内で最大数を見つけるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 与えられたリスト入力では、与えられたリストの中で最大の数を見つける必要があります。 ここでは、2つのアプローチについて説明します 並べ替え手法の使用 組み込みのmax()関数を使用する アプローチ1-組み込みのsort()関数を使用する 例 list1 = [18, 65, 78, 89, 90] list1.sort() # main print("Largest element is:", list1[-1]) 出力 Largest element is: