मान लीजिए हमारे पास दो सरणियाँ (नॉन-डिक्रीजिंग) nums1 और nums2 हैं। इंडेक्स युग्म (i, j) जहां 0 <= i < nums1 का आकार, और 0 <= j < nums2 का आकार, वैध है यदि i <= j और nums1[i] <= nums2[j] सत्य है। युग्म की दूरी को (j - i) से दर्शाया जाता है। हमें प्रत्येक वैध युग्म (i,j) से अधिकतम दूरी ढूंढनी है। यदि कोई वैध युग्म नहीं है, तो 0 लौटाएं।
उदाहरण के लिए, यदि इनपुट है nums1 = [60,40,15,10,5], nums2 = [115,30,25,15,10], तो आउटपुट 1 होगा क्योंकि, यहां वैध युग्म हैं (0,0), (2,2), (2,3), (3,3), (3,4) और (4,4), यहां अधिकतम दूरी 1 है या तो युग्म (2,3) के लिए या युग्म (3,4) के लिए।
समाधान दृष्टिकोण
इस समस्या को हल करने के लिए हम निम्न चरणों का पालन करेंगे:
यदि nums1 का अंतिम तत्व > nums2 का पहला तत्व, तो 0 लौटाएं
i := 0, j := 0 और max_dist := 0
जब तक i < nums1 का आकार, तब तक
यदि j < nums2 का आकार और nums1[i] <= nums2[j], तो
max_dist := max(max_dist, j-i)
j := j + 1
अन्यथा,
j := j + 1
i := i + 1
max_dist लौटाएं
उदाहरण
बेहतर समझ के लिए निम्न कार्यान्वयन देखें:
def solve(nums1, nums2):
if nums1[len(nums1)-1] > nums2[0]:
return 0
i = j = max_dist = 0
while i < len(nums1):
if j < len(nums2) and nums1[i] <= nums2[j]:
max_dist = max(max_dist, j-i)
j += 1
else:
j += 1
i += 1
return max_dist
nums1 = [60,40,15,10,5]
nums2 = [115,30,25,15,10]
print(solve(nums1, nums2))इनपुट
[60,40,15,10,5], [115,30,25,15,10]
आउटपुट
1