75. Sort Colors
Содержание
Условие
Дан массив из n
объектов разных цветов, красный, белый и голубой. Необходимо отсортировать этот массив таким образом, что бы объекты одного цвета были рядом, а цвета были в поряке красные, белый и голубой.
Для обозначения цветом будет использоваться числа 0,1 и 2 соответствующе для цветом красный, белый и голобуй.
Note: Нельзя использовать встроенные аглоритмы сортировки
пример 1
|
|
Follow up:
- Очевидное решение использует два прохода по массиву: в первом подсчитать количество единиц, нулей и двоек. Во втором проходе – записать соответствующее количетсво элементов;
- Попробуйте решить используя всего один проход по массиву.
Решение
Два указателя
Идея – использовать два указателя: конец последовательности нулей
и конец последовательности единиц
.
Идем по массиву :
- если текущий элемент равен нуля – обмениваем его и следующей за концом последовательности нулей
- если текущий элемент равен двум – обмениваем его и следующий элемент за концом последовательности двоек
|
|