কম্পিউটার

পাইথনে ব্যবধানের তালিকা থেকে মোট অনন্য সময়কাল খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের কাছে ব্যবধানের একটি তালিকা রয়েছে যেখানে প্রতিটি তালিকা একটি ব্যবধান [শুরু, শেষ] (অন্তর্ভুক্ত) উপস্থাপন করে। আমাদের এটি কভার করে মোট অনন্য সময়কাল খুঁজে বের করতে হবে৷

সুতরাং, যদি ইনপুটটি ব্যবধানের মত হয় =[[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
  • উত্তর :=উত্তর + শেষ - শুরু + 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

  1. পাইথন প্রোগ্রাম একটি তালিকার ক্রমবর্ধমান যোগফল খুঁজে বের করতে

  2. পাইথন প্রোগ্রাম একটি তালিকায় সবচেয়ে বড় সংখ্যা খুঁজে বের করতে

  3. একটি তালিকা থেকে N বৃহত্তম উপাদান খুঁজে পেতে পাইথন প্রোগ্রাম

  4. একটি তালিকা থেকে অনন্য মান প্রিন্ট করতে পাইথন প্রোগ্রাম