Плюс один

Задача:

Дано неотрицательное число представленое как массив цыфер. Добавте до этого числа плюс единицу.

Ограничение:

Цыфры подаются так, что наиболее значимое число стоит у головы массива.

Решение на Java:

public class Solution {
    public int[] plusOne(int[] digits) {
        List list = new ArrayList();
	if (digits.length == 0) {
		return new int[0];
	}
	
	int x = 0;
	for(int i = digits.length - 1; i >= 0; i--) {
		x = i == digits.length - 1 ? digits[i] + 1 : digits[i] + x;
		list.add((x%10 == 0 ? 0 : x%10));
		x = x%10 == 0 && x != 0 ? 1 : (x - x%10)/10;
	}
	
	if (x > 0) {
		list.add(x);
	}
	int[] result = new int[list.size()];
	for(int i = 0; i < list.size(); i++) {
		result[i] = list.get(list.size() - 1 - i);
	}
	return result;
    }
}

LikeMe: