मान लीजिए कि हमारे पास बंद अंतराल की एक सूची है और अंतराल की एक और सूची है। व्यक्तिगत रूप से, प्रत्येक सूची गैर-अतिव्यापी होती है और उन्हें गैर-घटते क्रम में क्रमबद्ध किया जाता है। हमें गैर-घटते क्रम में क्रमबद्ध दो अंतरालों के ओवरलैप को खोजना होगा।
इसलिए, यदि इनपुट inv1 =[[50, 100], [190, 270], [310, 330]] inv2 =[[40, 120], [180, 1990]] जैसा है, तो आउटपुट होगा [ [50, 100], [190, 1990]]
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- उत्तर:=एक नई सूची
- i :=0, j :=0
- जबकि मैं <ए का आकार और जे <बी का आकार, करते हैं
- यदि प्रारंभ <=अंत, तो
- अंतराल [शुरू, अंत] को उत्तर में डालें
- अगर A[i, 1]
- i :=i + 1
- यदि प्रारंभ <=अंत, तो
- अन्यथा,
- j :=j + 1
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, A, B): ans = [] i = 0 j = 0 while i < len(A) and j < len(B): start = max(A[i][0], B[j][0]) end = min(A[i][1], B[j][1]) if start <= end: ans.append([start, end]) if A[i][1] < B[j][1]: i += 1 else: j += 1 return ans ob = Solution() inv1 = [[50, 100],[190, 270],[310, 330]] inv2 = [[40, 120],[180, 190]] print(ob.solve(inv1, inv2))
इनपुट
[[50, 100],[190, 270],[310, 330]], [[40, 120],[180, 190]]
आउटपुट
[[50, 100], [190, 190]]