मान लीजिए हमारे पास क्लोज्ड अंतराल की एक सूची और दूसरी अंतरालों की सूची है। व्यक्तिगत रूप से, प्रत्येक सूची नॉन-ओवरलैपिंग है और नॉन-डिक्रीजिंग क्रम में सॉर्टेड है। हमें दोनों अंतरालों के ओवरलैप को नॉन-डिक्रीजिंग क्रम में ढूंढना है।
उदाहरण के लिए, यदि इनपुट inv1 = [[50,100],[190,270],[310,330]] और inv2 = [[40,120],[180,190]] है, तो आउटपुट [[50,100], [190,190]] होगा।
समाधान दृष्टिकोण
इसे हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे (टू-पॉइंटर):
ans := [],i := 0, j := 0- जब तक
i < len(A)औरj < len(B):start := max(A[i][0], B[j][0])end := min(A[i][1], B[j][1])- यदि
start <= end:ans.append([start, end]) - यदि
A[i][1] < B[j][1]:i += 1 - अन्यथा:
j += 1
ansलौटाएं
उदाहरण कोड
class Solution:
def solve(self, A, B):
ans = []
i = 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]]