Код 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
- Три указателя: граница нулей, текущий, граница двоек.
- После обмена с концом не двигай текущий - пришедший элемент ещё не проверен.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.