public int[] plusOne(int[] digits) {

        if (digits == null || digits.length == 0) {
            return digits;
        }

        boolean hasBItCarray = false;
        int bitCarray = 0;
        for (int i = digits.length - 1; i >= 0; i--) {
            int digitalResult = digits[i] + 1;
            if (digitalResult > 9) {
                bitCarray = 1;
                digits[i] = 0;
            } else {
                bitCarray = 0;
                digits[i] = digitalResult;
                return digits;
            }
        }

        if (bitCarray == 1) {
            int[] newDigits = new int[digits.length + 1];
            newDigits[0] = 1;
            for (int i = 0; i < digits.length; i++) {
                newDigits[i + 1] = digits[i];
            }
            return newDigits;
        }

        return digits;
    }