Что такое 2 указателя?
общая идея заключающаяся в том что у нас есть два указателя(индекса в массиве) которые двигаются только в одном направлении в конечном итоге каждый уазатель пройдет максимум длинну массива а значит сложность алгоритма будет линейной
в данном случае один указатель будет стоять после последней заполненной ячейке а второй будет бежать по массиву если встречается нелвой элемент то мы будем увеличивать второй указатель а первый не трогать если не нулевой то записываем значение из второго индекса в первый и сдвигаем оба. В коде проще чем на словах :)