Python Codingbat balance_point: с чего начать

У меня есть задание по программированию, которое мне нужно выполнить, и я уже искал здесь решение или любой другой совет и не смог его найти.

Вот проблема: "Точка баланса" - это точка, в которой массив списка значений может быть разбит так, чтобы сумма чисел на одной стороне равнялась сумме чисел на другой. (Точка баланса включена во "второй" подсписок.) Если задан непустой список целых, вернуть точку баланса или -1, если для данного списка нет точки баланса.

balance_point([1, 1, 1, 2, 1]) → 3
balance_point([2, 1, 1, 2, 1]) → -1
balance_point([10, 10]) → 1

Я хочу разделить список на две части и суммировать каждую отдельную часть, а затем сравнить суммы. Тем не менее, как я могу узнать, где разделить список? и как я могу сложить эти числа слева и справа?

Любая помощь будет оценена!

1 ответ

Базовый случай: если размер списка меньше двух, вернуть -1

Настроить

  • Пусть sR - сумма правого подсписка, а R - индекс последнего элемента в списке n-1. Установите sR в значение элемента по индексу n-1
  • Пусть sL - сумма левого подсписка, а L - индекс первого элемента в списке 0. Установите sL в значение элемента с индексом 0

Алгоритм:

  1. если sR L И R-1 больше, чем L, то добавьте значение по индексу R-1 к sR и установите R на R-1

  2. если sL R И L+1 меньше, чем R, то добавьте значение по индексу L+1 к sL и установите L в L+1

  3. если sL = sR И L+1 меньше, чем R-1, установите R на R-1 и установите L на L+1, затем повторите шаги 1-2

  4. Повторите шаги 1-3, пока все условия не будут ложными

Ответ:

Если sL = sR, вернуть R, иначе вернуть -1

Другие вопросы по тегам