Выбор ответа Junior Два указателя обновлено

Перенос нулей в конец

Вопрос

Что будет в arr после выполнения?

const arr = [0, 1, 0, 3, 12];
let w = 0;
for (let r = 0; r < arr.length; r++) {
  if (arr[r] !== 0) {
    [arr[w], arr[r]] = [arr[r], arr[w]];
    w++;
  }
}

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

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

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

Коротко

Правильный ответ: [1, 3, 12, 0, 0]. w указывает на позицию следующего ненулевого.

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

  1. [0, 0, 1, 3, 12]
  2. [1, 3, 12, 0, 0]правильный ответ
  3. [1, 0, 3, 0, 12]
  4. [12, 3, 1, 0, 0]

Разбор

w указывает на позицию следующего ненулевого. Ненулевые меняются местами с arr[w], нули уезжают в конец, порядок ненулевых сохраняется: [1, 3, 12, 0, 0].

  • Нули не переезжают в начало.
  • Массив меняется, исходный порядок не остаётся.
  • Порядок ненулевых не разворачивается.

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

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