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