今天我接受了一次采访,面试官要求制作一个增加两个数字的程序,我很震惊他怎么能提出一个简单的问题,但问题是不同的
两个数字的长度可以是任何数字(10,20,30甚至1000等)
请帮我解决这个问题。
答案 0 :(得分:1)
你总是可以在数组中取两个数字(即数组中有数字的数字作为元素)并在我们手动添加时添加它们,即从一个数字开始并存储进位(如果它存在)然后为10位数字,然后是数百位数字等做同样的事情。
假设您要添加123和329。
X = 123, X[] = [1,2,3]
Y = 329, Y[] = [3,2,9]
从一个数字开始(最右边或最后一个元素)并添加X和Y数组的元素并添加进位(最初设置为0)。如果加法大于10,则设置carry = sum / 10
(因为我们添加每个元素,此进位应始终为0或1)并添加到add [i] = sum % 10
。重复直到较小阵列的所有元素都结束。然后将进位添加到更大数组的剩余元素继续上述逻辑。
carry = 0
Step 1 : 3 + 9 + carry (0) = 5, carry => 12 / 10 = 1, add => 12 % 10 = 2
Step 2 : 2 + 2 + carry (2) = 6, carry => 6 / 10 = 0, add => 6 % 10 = 6
Step 3 : 3 + 1 + carry (0) = 4, carry => 4 / 10 = 0, add => 4 % 10 = 4
Ans = 462
显然,存储和的数组可能只有一位数,所以也要照顾它。