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

Pythonの間隔のリストから合計一意の期間を見つけるプログラム


各リストが間隔[開始、終了](両端を含む)を表す間隔のリストがあるとします。それがカバーするユニークな期間の合計を見つける必要があります。

したがって、入力がintervals =[[2、11]、[13、31]、[41、61]]のような場合、一意のカバー距離の合計は(11-2 + 1)であるため、出力は50になります。 =10の場合、(31-13 + 1)=19および(61-41 + 1)=21なので、合計は50になります。

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

  • 間隔リストが空の場合、
    • 0を返す
  • リスト間隔を並べ替える
  • [開始、終了]:=間隔[0]
  • ans:=0
  • 間隔を置いて開始および終了(s、e)ごとに、
    • s>が終了した場合、
      • ans:=ans + end --start + 1
      • start:=s、end:=e
    • それ以外の場合、
      • end:=endの最大値、e
  • ans:=ans + end --start + 1
  • 回答を返す

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

class Solution:
   def solve(self, intervals):
      if not intervals:
         return 0
         intervals.sort()
         start, end = intervals[0]
         ans = 0
         for s, e in intervals:
            if s > end:
               ans += end - start + 1
               start = s
               end = e
            else:
               end = max(end, e)
            ans += end - start + 1
         return ans
ob = Solution()
intervals = [[2, 11],[13, 31],[41, 61]]
print(ob.solve(intervals))

入力

[[2, 11],[13, 31],[41, 61]]

出力

50

  1. リストの累積合計を見つけるPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが与えられたので、累積合計でリストを作成する必要があります。 次に、以下の実装のソリューションを見てみましょう- 例 # cumulative sum def Cumulative(l):    new = []    cumsum = 0    for element in l:       cumsum += element       new.append(cumsum) &

  2. リストから一意の値を出力するPythonプログラム

    リストが与えられた場合、私たちのタスクはすべての一意の番号を印刷することです。 例 Input:A = [1, 2, 3, 4, 2, 1, 9] Unique list is [1, 2, 3, 4, 9] アルゴリズム Step 1: Create user input list. Step 2: Create an empty list. Step 3: Traverse all elements in the list. Step 4: Check the unique element is present or not. Step 5: Append unique element o