मान लीजिए कि हमारे पास एक क्रमबद्ध और असंबद्ध अंतराल सूची है और एक अन्य सूची कट है, जो एक अंतराल का प्रतिनिधित्व करती है। हमें अंतराल के उन सभी हिस्सों को हटाना होगा जो कट अंतराल के साथ प्रतिच्छेद कर रहे हैं, और नई सूची लौटाएं।
इसलिए, यदि इनपुट अंतराल की तरह है =[[2, 11], [13, 31], [41, 61]] कट =[8, 46], तो आउटपुट [[2, 8], [46] होगा , 61]]
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- कट_स्टार्ट, कट_एंड:=कट
- उत्तर:=एक नई सूची
- प्रत्येक प्रारंभ के लिए, अंतराल में समाप्त करें, करें
- यदि अधिकतम कट_स्टार्ट और प्रारंभ <न्यूनतम अंत और कट_एंड, तो
- यदि प्रारंभ <कट_स्टार्ट, तो
- अंतराल [शुरू, कट_स्टार्ट] को उत्तर में डालें
- यदि समाप्त हो> cut_end, तो
- अंतराल [कट_एंड, एंड] को उत्तर में डालें
- यदि प्रारंभ <कट_स्टार्ट, तो
- अन्यथा,
- यदि अधिकतम कट_स्टार्ट और प्रारंभ <न्यूनतम अंत और कट_एंड, तो
- वापसी उत्तर
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, intervals, cut): cut_start, cut_end = cut ans = [] for start, end in intervals: if max(cut_start, start) < min(end, cut_end): if start < cut_start: ans.append([start, cut_start]) if end > cut_end: ans.append([cut_end, end]) else: ans.append([start, end]) return ans ob = 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]]