Program to find maximum distance between a pair of values in Python


Suppose we have two arrays (non-growing) nums1 and nums2. The index pair (i, j) with 0 <= i < size of nums1, and 0 <= j < size of nums2 is valid if i <= j and nums1 [i] <= nums2 [j] is true. The pair distance is denoted as (j - i). We have to find the maximum distance from each valid pair (i,j). If there are no valid pairs, return 0.

So, if the input is like nums1 = [60,40,15,10,5], nums2 = [115,30,25,15,10], then the output willbe 1 because, here valid pairs are (0,0), (2,2), (2,3), (3,3), (3,4) and (4,4), here maximum distance is 1 for either pair (2,3) or pair (3,4)

To solve this, we will follow these steps −

  • if last element of nums1 > first eoelement of nums2, then

    • return 0

  • i := 0, j := 0 and max_dist := 0

  • while i < size of nums1, do

    • if j < size of nums2 and nums1[i] <= nums2[j], then

      • max_dist := maximum of max_dist and (j-i)

      • j := j + 1

    • otherwise,

      • j := j + 1

      • i := i + 1

  • return max_dist

Example

Let us see the following implementation to get better understanding −

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))

Input

[60,40,15,10,5], [115,30,25,15,10]

Output

1

Updated on: 08-Oct-2021

504 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements