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