Проверить, делится ли сумма массива первой половины на сумму другой половины или наоборот

Опубликовано: 21 Сентября, 2022

Учитывая массив arr[] размера N , задача состоит в том, чтобы проверить, делится ли сумма левого подмассива на сумму правого подмассива или наоборот. Выведите Да , если было, иначе Нет . Здесь левый подмассив будет содержать строку от 0 до mid=(N-1)/2 , а правый подмассив будет содержать строку от mid+1 до N-1 .

Пример:

Input: arr[] = [1, 2, 3, 4, 5]
Output: No
Explanation:
Sum of left subarray: 1+2+3=6
Sum of right subarray: 4+5=9
So, the sum of neither of them is divisible by the other one.

Input: arr[] = [4, 5, 6, 1, 2, 2]
Output: Yes
Explanation:
Sum of left subarray: 4+5+6=15
Sum of right subarray: 1+2+2=5
So, the sum of left subarray is divisible by the sum of right subarray

Подход: выполните следующие шаги, чтобы решить эту проблему:

  1. Создайте две переменные sumL и sumR для хранения суммы левого подмассива и правого подмассива соответственно. Инициализируйте их обоих с 0 .
  2. Теперь запустите цикл от 0 до N-1 и для итераций в диапазоне от 0 до (N-1)/2 добавьте элементы в sumL . И для итераций после (N-1)/2 добавьте элементы в sumR .
  3. После завершения цикла проверьте, делится ли sumL на sumR или делится ли sumR на sumL . Если какое-либо из этих условий удовлетворяет, то выведите Да , иначе Нет .

Ниже приведена реализация описанного выше подхода.

Временная сложность : O(N), так как мы используем цикл для прохождения N раз.

Вспомогательное пространство : O(1), так как мы не используем дополнительное пространство.