닫힌 간격 목록과 다른 간격 목록이 있다고 가정합니다. 개별적으로 각 목록은 겹치지 않으며 내림차순으로 정렬됩니다. 내림차순으로 정렬된 두 구간의 겹침을 찾아야 합니다.
따라서 입력이 inv1 =[[50, 100],[190, 270],[310, 330]] inv2 =[[40, 120],[180, 190]]과 같으면 출력은 [ [50, 100], [190, 190]]
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- ans :=새 목록
- i :=0, j :=0
- i
- 시작 <=끝이면
- 간격 [시작, 끝] 삽입
- A[i, 1]
- 나는 :=나는 + 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]]