Код Senior Два указателя обновлено

Сортировка трёх значений

Условие

Массив из 0, 1 и 2. Отсортируй на месте за один проход. Верни тот же массив.

Примеры

sortColors([2, 0, 2, 1, 1, 0]) // [0, 0, 1, 1, 2, 2]
sortColors([]) // []
sortColors([1]) // [1]

Как подойти

Голландский флаг Дейкстры. Инвариант: всё до low - нули, от low до mid - единицы, после high - двойки. Тонкость: при обмене с high текущий индекс не увеличивается, потому что новый элемент ещё не рассмотрен.

Подсказки: 2
  1. Три указателя: граница нулей, текущий, граница двоек.
  2. После обмена с концом не двигай текущий - пришедший элемент ещё не проверен.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.