Выбор ответа Middle Матрицы обновлено

Спиральный обход

Вопрос

Обход по спирали с границами top, bottom, left, right. Зачем проверки if (top <= bottom) и if (left <= right) перед нижним и левым проходом?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Чтобы на неквадратной матрице не пройти одну полосу дважды. После прохода по верху и правому краю границы сдвигаются.

Варианты ответа

  1. Чтобы на неквадратной матрице не пройти одну полосу дваждыправильный ответ
  2. Для скорости: проверка отсекает лишние итерации цикла
  3. Чтобы корректно обработать пустую матрицу []
  4. Они не нужны: границы и так не пересекаются в цикле

Разбор

После прохода по верху и правому краю границы сдвигаются. В матрице, например, 3 × 1 или 1 × 3, оставшаяся «полоса» уже пройдена, и без проверки элементы попадут в ответ повторно.

  • На скорость не влияют.
  • Пустую матрицу проверяют отдельно в начале.
  • Без них ответ неверен на прямоугольных матрицах.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.