Числа не помещаются в стандартные типы, поэтому хранятся как срезы десятичных
цифр, старшая цифра — первой (как в обычной записи). Нужно сложить два таких
числа и вернуть сумму в том же виде.
// AddDigits складывает два неотрицательных числа, заданных десятичными
// цифрами (старшая первой), и возвращает сумму в том же представлении.
func AddDigits(a, b []int) []int
Примеры
[3,0,8] + [2,9,5] = [6,0,3] // 308 + 295 = 603
[6,7,2] + [3,5,0] = [1,0,2,2] // 672 + 350 = 1022
[] + [5] = [5] // 0 + 5
[] + [] = [0] // 0 + 0
Ограничения
- Каждый элемент входа — цифра
0..9. Числа без ведущих нулей, кроме самого
нуля ([0]); пустой срез трактуется как число 0.
- Результат тоже без ведущих нулей (кроме
[0]).
- Входные срезы менять нельзя.
- Ожидается O(N) по времени и памяти, где
N = max(len(a), len(b)) + 1.
Устно: почему именно +1 к длине в оценке? Как это обобщается на другую
систему счисления (например, числа-массивы по основанию 2³² ради скорости)?
Разбор и эталонное решение — после своей попытки: на собеседовании подсказок не будет.
Сначала попробуй сам — подсказки не дают готовый ответ.