You are given two non-empty arrays representing two non-negative
integers. The digits are stored in reverse order and each of their
items contain a single digit. Add the two numbers and return it as an
array.

You may assume the two numbers do not contain any leading zero, except
the number 0 itself.

Carry

The aim is to carry the remainder of each addition onto the next digit. This is fundamental to all ALU (Arithmetic Logic Units) that are part of almost every modern CPU. (In the case of binary the carry is 1 or 0)

So when you add two values 9 + 9 the result is 8 and carry 1. You then add the 1 to the next digit. If no digit add it to zero. The result is 18.