public class DuplicateZeros {
    public void duplicateZeros(int[] array) {
        int removals = 0, k = array.length - 1;
        for (int i = 0 ; i < array.length - removals ; i++) {
            if (array[i] == 0) {
                if (i == array.length - 1 - removals) {
                    array[k--] = 0;
                }
                removals++;
            }
        }
        for (int i = array.length - 1 - removals ; i >= 0 ; i--, k--) {
            if (array[i] == 0) {
                array[k] = array[k - 1] = 0;
                k--;
            } else {
                array[k] = array[i];
            }
        }
    }
}