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

Python에서 절단 간격과 교차하지 않는 간격을 찾는 프로그램

<시간/>

정렬되고 분리된 간격 목록과 간격을 나타내는 또 다른 목록 절단이 있다고 가정합니다. 컷 간격과 교차하는 간격의 모든 부분을 삭제하고 새 목록을 반환해야 합니다.

따라서 입력이 간격 =[[2, 11],[13, 31],[41, 61]] cut =[8, 46]인 경우 출력은 [[2, 8], [46 , 61]]

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • cut_start, cut_end :=자르기
  • ans :=새 목록
  • 시작할 때마다 간격으로 끝내고
    • cut_start 및 start의 최대값이 end 및 cut_end의 최소값인 경우
      • 시작
      • 간격 [start, cut_start] 삽입
    • 끝이면> cut_end이면
      • 간격 [cut_end, end] 삽입
  • 그렇지 않으면
  • 반환
  • 이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

    class Solution:
       def solve(self, intervals, cut):
       cut_start, cut_end = cut
       ans = []
       for start, end in intervals:
          if max(cut_start, start) < min(end, cut_end):
             if start < cut_start:
                ans.append([start, cut_start])
                if end > cut_end:
                   ans.append([cut_end, end])
             else:
                ans.append([start, end])
          return ans
    ob = Solution()
    intervals = [[2, 11],[13, 31],[41, 61]] cut = [8, 46]
    print(ob.solve(intervals, cut))

    입력

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

    출력

    [[2, 8], [46, 61]]