Syntax error Find an element which divides the array in two subarrays with equal product in Python

Find an element which divides the array in two subarrays with equal product in Python



Suppose we have an array of size N; we have to find an element which divides the array into two different sub-arrays with equal product. Return -1 if no such partition is possible.

So, if the input is like [2,5,3,2,5], then the output will be 3 then subarrays are: {2, 5} and {2, 5}

To solve this, we will follow these steps −

  • n := size of array
  • multiply_pref := a new list
  • insert array[0] at the end of multiply_pref
  • for i in range 1 to n, do
    • insert multiply_pref[i-1]*array[i] at the end of multiply_pref
  • multiply_suff := a list of size n, and fill with none
  • multiply_suff[n-1] := array[n-1]
  • for i in range n-2 to -1, decrease by 1, do
    • multiply_suff[i] := multiply_suff[i+1]*array[i]
  • for i in range 1 to n-1, do
    • if multiply_pref[i] is same as multiply_suff[i], then
      • return array[i]
  • return -1

Example Code 

Let us see the following implementation to get better understanding −

 Live Demo

def search_elem(array):
   n = len(array)
   multiply_pref = []
   multiply_pref.append(array[0])
   for i in range(1, n):
      multiply_pref.append(multiply_pref[i-1]*array[i])
   multiply_suff = [None for i in range(0, n)]
   multiply_suff[n-1] = array[n-1]
   for i in range(n-2, -1, -1):
      multiply_suff[i] = multiply_suff[i+1]*array[i]
   for i in range(1, n-1):
      if multiply_pref[i] == multiply_suff[i]:
         return array[i]
   return -1
array = [2,5,3,2,5]
print(search_elem(array))

Input

[2,5,3,2,5]

Output

3
Updated on: 2020-08-28T10:01:27+05:30

154 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements