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

পাইথনে ইন্টারভালের তালিকা থেকে সবচেয়ে লম্বা মার্জড ইন্টারভাল বের করার প্রোগ্রাম


মান লক্ষ্য করুন আমাদের কাছে একটি ইন্টারভালের তালিকা আছে যেটি [start, end] ফর্মে। আমাদের কাজ হল ওভারল্যাপিং ইন্টারভালগুলো মার্জ করে সবচেয়ে লম্বা ইন্টারভাল বের করা।

উদাহরণস্বরূপ, যদি ইনপুট হয় [[1, 6],[4, 9],[5, 6],[11, 14],[16, 20]], তবে আউটপুট হবে 9, কারণ মার্জ করার পর [1, 9] ইন্টারভাল পাওয়া যায় যেটির দৈর্ঘ্য ৯।

সমাধানের ধাপসমূহ:
  • intervals তালিকাটি সর্ট করুন।
  • union := intervals[0] (প্রথম ইন্টারভাল)
  • best := union[1] - union[0] + 1
  • প্রতিটি s, e এর জন্য intervals[1:]-এ:
    • যদি s <= union[1] হয়, তবে union[1] := max(union[1], e)
    • অন্যথায়, union := [s, e]
    • best := max(best, union[1] - union[0] + 1)
  • best রিটার্ন করুন।
উদাহরণ কোড
class Solution:
    def solve(self, intervals):
        intervals.sort()
        union = intervals[0]
        best = union[1] - union[0] + 1
        for s, e in intervals[1:]:
            if s <= union[1]:
                union[1] = max(union[1], e)
            else:
                union = [s, e]
            best = max(best, union[1] - union[0] + 1)
        return best

ob = Solution()
intervals = [[1, 6],[4, 9],[5, 6],[11, 14],[16, 20]]
print(ob.solve(intervals))
ইনপুট
[[1, 6],[4, 9],[5, 6],[11, 14],[16, 20]]
আউটপুট
9
  1. পাইথনে ইন্টারভালের তালিকা থেকে টোটাল ইউনিক ডিউরেশন বের করার প্রোগ্রাম

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

  3. পাইথনে স্ট্রিং তালিকা থেকে লংগেস্ট কমন প্রিফিক্স খুঁজে বের করার প্রোগ্রাম

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