public int[] plusOne(int[] digits) {
		int len = digits.length;
		if (len == 0) {
			return digits;
		}

		if (digits[len - 1] != 9) {
			digits[len - 1] = digits[len - 1] + 1;
			return digits;
		}

		int index = len - 1;
		while (index >= 0 && digits[index] == 9) {
			index--;
		}

		if (index == -1) {
			// digits == 9999...
			int[] newDigits = new int[len + 1];
			newDigits[0] = 1;
			return newDigits;
		} else {
			digits[index] = digits[index] + 1;
			for (int i = index + 1; i < len; i++) {
				digits[i] = 0;
			}
			return digits;
		}
	}