मान लीजिए हमारे पास अंतराल की एक सूची है जहां प्रत्येक सूची एक अंतराल [start, end] (सम्मिलित) दर्शाती है। हमें कुल यूनिक अवधि ढूंढनी है जो यह कवर करती है।
उदाहरण के लिए, यदि इनपुट intervals = [[2,11],[13,31],[41,61]] है, तो आउटपुट 50 होगा, क्योंकि कुल यूनिक कवर दूरी (11-2+1)=10 फिर (31-13+1)=19 और (61-41+1)=21, कुल 50।
समाधान दृष्टिकोण
इसे हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:
- यदि
intervalsखाली: 0 लौटाएं intervalsसॉर्ट करें[start, end] := intervals[0]ans := 0- प्रत्येक
(s,e)के लिएintervalsमें:- यदि
s > end:ans += end - start + 1start, end = s, e
- अन्यथा:
end = max(end, e)
- यदि
ans += end - start + 1ansलौटाएं
उदाहरण कोड
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, end = s, 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