Skip to content

Latest commit

 

History

History
64 lines (52 loc) · 1.32 KB

1089 Duplicate Zeros 1ee0b15176984a16850b56306a78d3ef.md

File metadata and controls

64 lines (52 loc) · 1.32 KB

1089. Duplicate Zeros

LeetCode - The World's Leading Online Programming Learning Platform

code1

class Solution {
    public void duplicateZeros(int[] arr) {
        int length = arr.length;
        int zeros = 0;

        for (int i = 0; i < length; i++) {
            if (arr[i] == 0) {
                zeros++;
            }
        }

        int lastIndex = length - 1;
        int newIndex = length - 1 + zeros;

        while (lastIndex >= 0) {
            if (newIndex < length) {
                arr[newIndex] = arr[lastIndex];
            }

            if (arr[lastIndex] == 0) {
                newIndex--;

                if (newIndex < length) {
                    arr[newIndex] = 0;
                }
            }

            lastIndex--;
            newIndex--;
        }
    }
}

code2

class Solution {
    public void duplicateZeros(int[] arr) {
        int length = arr.length;

        for (int i = 0; i < length ; i++)
        {
            if (arr[i] == 0 && i+1 < length)
            {
                for (int j = length - 1; j > i+1; j--)
                {
                    int temp = arr[j-1];
                    arr[j] = temp;
                }
                arr[i+1] = 0;
                i++;
            }
        }
    }
}