Поиск точки баланса в массиве

Этот вопрос взят с отличного канала на YouTube, где приведены проблемы, которые можно задать в интервью.

В основном это связано с поиском точки баланса в массиве. Вот пример, чтобы лучше всего объяснить это; {1,2,9,4,-1}. Здесь, поскольку sum(1+2)=sum(4+(-1)) делает 9 точкой баланса . Не проверив ответ, я решил реализовать алгоритм, прежде чем хотел спросить, можно ли сделать более эффективный подход;

  1. Суммировать все элементы массива O(n)
  2. Получить половину суммы O(1)
  3. Начать сканирование массива слева и остановиться, когда sumleftбольше половины общей суммы. O(n)
  4. Сделайте то же самое для правого, чтобы получить правую сумму.О(n).
  5. Если sumleftравно sumrightreturn arr[size/2]else return -1

Я спрашиваю, потому что это Решение пришло мне в голову без каких-либо усилий, обеспечивая время работы O (n). Можно ли разработать это решение, если оно верно, или, если оно неверно, какие-либо альтернативные методы?

5
задан Ali 13 June 2012 в 21:00
поделиться