ধরুন আমাদের কাছে ব্যবধানের একটি তালিকা রয়েছে যেখানে প্রতিটি তালিকা একটি ব্যবধান [শুরু, শেষ] (অন্তর্ভুক্ত) উপস্থাপন করে। আমাদের এটি কভার করে মোট অনন্য সময়কাল খুঁজে বের করতে হবে৷
সুতরাং, যদি ইনপুটটি ব্যবধানের মত হয় =[[2, 11],[13, 31],[41, 61]], তাহলে আউটপুট হবে 50, কারণ মোট অনন্য আচ্ছাদিত দূরত্ব (11 - 2 + 1) =10 তারপর (31 - 13 + 1) =19 এবং (61 - 41 + 1) =21, তাই মোট 50।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- যদি ব্যবধান তালিকা খালি থাকে, তাহলে
- রিটার্ন 0
- তালিকা ব্যবধান বাছাই করুন
- [শুরু, শেষ] :=বিরতি[0]
- উত্তর :=0
- প্রতিটি শুরু এবং শেষের জন্য (s, e) বিরতিতে, করুন
- যদি s> শেষ হয়, তাহলে
- উত্তর :=উত্তর + শেষ - শুরু + 1
- শুরু :=s, শেষ :=e
- অন্যথায়,
- শেষ :=শেষের সর্বোচ্চ, 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