মান লক্ষ্য করুন আমাদের কাছে ক্লোজড ইন্টারভালের একটি তালিকা এবং অন্য একটি ইন্টারভালের তালিকা আছে। প্রতিটি তালিকা নিজে নিজে নন-ওভারল্যাপিং এবং নন-ডিক্রিজিং অর্ডারে সর্টেড। আমাদের কাজ হল এই দুটি ইন্টারভাল লিস্টের ওভারল্যাপ (অন্তর্ভুক্ত অংশ) বের করে নন-ডিক্রিজিং অর্ডারে রিটার্ন করা।
উদাহরণস্বরূপ, যদি ইনপুট হয় inv1 = [[50, 100],[190, 270],[310, 330]] এবং inv2 = [[40, 120],[180, 190]], তবে আউটপুট হবে [[50, 100], [190, 190]]।
ans := []i := 0,j := 0i < len(A)এবংj < len(B)হলে লুপ চালান:start := max(A[i][0], B[j][0])end := min(A[i][1], B[j][1])- যদি
start <= endহয়, তবে[start, end]কেans-এ ঢুকান। - যদি
A[i][1] < B[j][1]হয়, তবেi += 1, অন্যথায়j += 1
ansরিটার্ন করুন।
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]]