ধরুন আমাদের একটি বাছাই করা এবং বিচ্ছিন্ন ব্যবধানের তালিকা এবং আরেকটি তালিকা কাটা আছে, যা একটি ব্যবধানকে প্রতিনিধিত্ব করে। কাটা ব্যবধানের সাথে ছেদ করা অন্তরের সমস্ত অংশ আমাদের মুছে ফেলতে হবে এবং নতুন তালিকা ফিরিয়ে দিতে হবে।
সুতরাং, ইনপুট যদি অন্তরের মত হয় =[[2, 11],[13, 31],[41, 61]] কাট =[8, 46], তাহলে আউটপুট হবে [[2, 8], [46] , 61]]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- cut_start, cut_end :=কাট
- উত্তর :=একটি নতুন তালিকা
- প্রতিটি শুরুর জন্য, বিরতিতে শেষ করুন, করুন
- যদি সর্বাধিক কাট_স্টার্ট এবং শুরু হয় <সর্বনিম্ন শেষ এবং কাট_এন্ড, তাহলে
- যদি শুরু হয়
- উত্তরগুলিতে ব্যবধান [start, cut_start] সন্নিবেশ করান
- যদি শুরু হয়
- যদি শেষ> কাট_এন্ড, তারপর
- উত্তরগুলিতে ব্যবধান [cut_end, end] সন্নিবেশ করুন
- যদি সর্বাধিক কাট_স্টার্ট এবং শুরু হয় <সর্বনিম্ন শেষ এবং কাট_এন্ড, তাহলে
- অন্যথায়,
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
শ্রেণীর সমাধান:def solve(self, intervals, cut):cut_start, cut_end =cut ans =[] শুরুর জন্য, ব্যবধানে শেষ:যদি সর্বোচ্চ(cut_start, start)cut_end:ans.append([cut_end, end]) else:ans.append([start, end]) return ansob =Solution()intervals =[[2 , 11],[13, 31],[41, 61]] cut =[8, 46]print(ob.solve(intervals, cut))
ইনপুট
<প্রে>[[2, 11],[13, 31],[41, 61]], [8, 46]আউটপুট
[[2, 8], [46, 61]]