Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 겹치는 간격을 찾아 오름차순으로 반환하는 프로그램

<시간/>

닫힌 간격 목록과 다른 간격 목록이 있다고 가정합니다. 개별적으로 각 목록은 겹치지 않으며 내림차순으로 정렬됩니다. 내림차순으로 정렬된 두 구간의 겹침을 찾아야 합니다.

따라서 입력이 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]]