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