কম্পিউটার টিউটোরিয়াল

পাইথনে ইন্টারভালের তালিকা থেকে টোটাল ইউনিক ডিউরেশন বের করার প্রোগ্রাম


মান লক্ষ্য করুন আমাদের কাছে একটি ইন্টারভালের তালিকা আছে যেটি [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 + 1
      • start := s, end := e
    • অন্যথায়, end := max(end, e)
  • ans += end - start + 1
  • ans রিটার্ন করুন।
উদাহরণ কোড
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
  1. লিস্টের কিউমুলেটিভ সাম বের করার পাইথন প্রোগ্রাম

  2. পাইথনে লিস্ট থেকে সর্বোচ্চ সংখ্যা বের করা

  3. পাইথনে লিস্ট থেকে N বড় এলিমেন্ট বের করা

  4. পাইথন প্রোগ্রাম: লিস্ট থেকে অনন্য (Unique) মান প্রিন্ট করা