Computer >> Máy Tính >  >> Lập trình >> Python

Tìm một phần tử chia mảng thành hai mảng con có tích bằng nhau trong Python

Giả sử chúng ta có một mảng kích thước N; chúng ta phải tìm một phần tử chia mảng thành hai mảng con khác nhau có tích bằng nhau. Trả về -1 nếu không có phân vùng như vậy.

Vì vậy, nếu đầu vào giống như [2,5,3,2,5], thì đầu ra sẽ là 3 thì các mảng con là:{2, 5} và {2, 5}

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • n:=kích thước của mảng
  • multi_pref:=một danh sách mới
  • chèn mảng [0] vào cuối Multi_pref
  • đối với tôi trong phạm vi từ 1 đến n, thực hiện
    • chèn Multi_pref [i-1] * mảng [i] vào cuối Multi_pref
  • multi_suff:=một danh sách có kích thước n và không điền vào
  • multi_suff [n-1]:=array [n-1]
  • đối với tôi trong phạm vi n-2 đến -1, giảm đi 1, thực hiện
    • multi_suff [i]:=Multi_suff [i + 1] * array [i]
  • đối với tôi trong phạm vi từ 1 đến n-1, hãy thực hiện
    • nếu Multi_pref [i] giống như Multi_suff [i], thì
      • trả về mảng [i]
  • trả về -1

Mã mẫu

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

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

Đầu vào

[2,5,3,2,5]

Đầu ra

3