Найти первое минимальное окно массива - PullRequest
0 голосов
/ 10 апреля 2011

Для целочисленного массива окно [a, b] состоит из элементов массива между a и b, а размер окна b - a.Теперь вы должны найти первое минимальное окно, между которым есть N / 2 элементов (N - размер массива, b - больше, чем a).
Например, {5, -3,10, 12, -2, -5}, мы получаем ответ [-5, -2].

Ответы [ 2 ]

2 голосов
/ 10 апреля 2011

Если я хорошо понимаю, вы должны найти первое окно длины N / 2, которое имеет наименьшую сумму.

Вы можете достичь этого, испробовав все возможные окна такой длины и сохранив самые маленькие из найденных к настоящему времени. Если вы делаете это умным способом, у вас может быть алгоритм сложности O (N). Поскольку это, кажется, домашнее задание, я позволю тебе разобраться сам;)

0 голосов
/ 11 апреля 2011

Одно решение:
a.Узнайте N (в O (N) время)
б.Пройдите по массиву и для каждого элемента x i найдите N / 2 - x i в хэше / карте.Если найдено, у вас есть решение, иначе вставьте N / 2 - x i во время хэша / карты (O (n) при использовании хеша или O (nlogn) при использовании карты и пространства O (n).).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...