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

Python의 간격 목록에서 총 고유 지속 시간을 찾는 프로그램

<시간/>

각 목록이 간격 [시작, 끝](포함)을 나타내는 간격 목록이 있다고 가정합니다. 우리는 그것이 다루는 총 고유 지속 시간을 찾아야 합니다.

따라서 입력이 간격 =[[2, 11],[13, 31],[41, 61]]과 같으면 총 고유 적용 거리가 (11 - 2 + 1)이므로 출력은 50이 됩니다. =10 다음 (31 - 13 + 1) =19 및 (61 - 41 + 1) =21이므로 합계는 50입니다.

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

  • 간격 목록이 비어 있으면
    • 0을 반환
  • 목록 간격 정렬
  • [시작, 종료] :=간격[0]
  • ans :=0
  • 각 시작 및 끝(s, e) 간격에 대해 다음을 수행합니다.
    • 만약 s>끝이면
      • ans :=ans + end - 시작 + 1
      • 시작 :=s, 끝 :=e
    • 그렇지 않으면
      • end :=끝의 최대값, e
  • ans :=ans + end - 시작 + 1
  • 반환

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시

class Solution:
   def solve(self, intervals):
      if not intervals:
         return 0
         intervals.sort()
         start, end = intervals[0]
         ans = 0
         for s, e in intervals:
            if s > end:
               ans += end - start + 1
               start = s
               end = e
            else:
               end = max(end, e)
            ans += end - start + 1
         return ans
ob = Solution()
intervals = [[2, 11],[13, 31],[41, 61]]
print(ob.solve(intervals))

입력

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

출력

50