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

重複する間隔を見つけてPythonで昇順で返すプログラム


閉じた区間のリストと別の区間のリストがあるとします。個別に、各リストは重複せず、降順ではありません。降順ではない順序で並べ替えられた2つの間隔の重複を見つける必要があります。

したがって、入力がinv1 =[[50、100]、[190、270]、[310、330]] inv2 =[[40、120]、[180、190]]の場合、出力は[ [50、100]、[190、190]]

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

  • ans:=新しいリスト
  • i:=0、j:=0
  • i
  • 開始<=終了の場合、
    • 間隔[開始、終了]をansに挿入します
  • A [i、1]
  • i:=i + 1
  • それ以外の場合、
    • j:=j + 1
  • 回答を返す
  • 理解を深めるために、次の実装を見てみましょう-

    class Solution:
       def solve(self, A, B):
          ans = []
          i = 0
          j = 0
          while i < len(A) and j < len(B):
             start = max(A[i][0], B[j][0])
             end = min(A[i][1], B[j][1])
             if start <= end:
                ans.append([start, end])
                if A[i][1] < B[j][1]:
                   i += 1
                else:
                   j += 1
             return ans
    ob = Solution()
    inv1 = [[50, 100],[190, 270],[310, 330]]
    inv2 = [[40, 120],[180, 190]]
    print(ob.solve(inv1, inv2))

    入力

    [[50, 100],[190, 270],[310, 330]], [[40, 120],[180, 190]]

    出力

    [[50, 100], [190, 190]]

    1. PythonのKと-K

      numsと呼ばれる数のリストがあるとすると、kと-kの両方がnumsに存在する最大の数kを見つける必要があります(同じ数でもかまいません)。そのような要素がない場合は、-1を返します。 したがって、入力が[-5、2、9、-6、5、-9]の場合、出力は9になります。 これを解決するには、次の手順に従います- L1:=0と正の要素の数値のリスト L2:=0と負の要素の数値のリスト L1を逆の順序で並べ替えます リストL2を並べ替える L1の各iについて、 L2の各jについて、 i + jが0と同じ場合、 私を返す 0の場合、 現在のループから抜け出します 戻り値-

    2. Pythonで交差する間隔を見つける

      間隔のリストがあり、各間隔が[start、end]のようであると仮定します。これは、間隔の開始時間と終了時間を表します(両端を含む)。それらの交点、つまり、指定されたすべての間隔内にある間隔を見つける必要があります。 したがって、入力が[[10、110]、[20、60]、[25、75]]の場合、出力は[25、60]になります。 これを解決するには、次の手順に従います- 開始、終了:=間隔リストから最後の要素を削除した後の間隔 間隔が空でない間は、 start_temp、end_temp:=間隔リストから最後の要素を削除した後の間隔 start:=startの最大値、start_tem