Вариантов на самом деле много. Как по мне, самый простой (для понимания) - это:
1. Пройтись по массиву и посчитать сколько "ненужных" в нём элементов
2. Создать новый массив размером "размер_предыдущего - количество_ненужных_элементов"
3. Проходимся еще раз по массиву и копируем в него только нужные элементы
Не самый оптимальный вариант, так как у нас два прохода по массиву. Можно и обойтись одним (например, копируя значения с конца массива и запоминая количество найденых элементов, чтобы потом обрезать массив правильно), но логика будет немного сложнее и запутаннее.