Program to generate array by concatenating subarrays of another array in Python


Suppose we have one 2D array called groups, and another array nums. We have to check whether we can select n disjoint subarrays from the array nums such that the ith subarray is equal to groups[i] (0-indexed), and if i > 0, the (i-1)th subarray will appear before the ith subarray in nums.

So, if the input is like groups = [[2,-2,-2],[4,-3,0]] nums = [1,-1,0,2,-2,-2,4,-3,0], then the output will be true because array group[0] is present from index 3 to 5 of nums and group[1] is from index 6 to 8 in nums.

To solve this, we will follow these steps −

  • i := 0

  • for each grp in groups, do

    • for j in range i to size of nums - 1, do

      • if subarray of nums[from index j to j+ size of grp] is same as grp, then

        • i := j + size of grp

        • come out from the loop

      • otherwise,

        • return False

  • return True

Example

Let us see the following implementation to get better understanding −

def solve(groups, nums):
   i = 0
   for grp in groups:
      for j in range(i, len(nums)):
         if nums[j:j+len(grp)] == grp:
            i = j + len(grp)
            break
      else:
         return False
   return True

groups = [[2,-2,-2],[4,-3,0]]
nums = [1,-1,0,2,-2,-2,4,-3,0]
print(solve(groups, nums))

Input

[[2,-2,-2],[4,-3,0]], [1,-1,0,2,-2,-2,4,-3,0]

Output

True

Updated on: 06-Oct-2021

173 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements