题目链接:989. 数组形式的整数加法
题意:
对于非负整数 X 而言,X 的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果 X = 1231,那么其数组形式为 [1,2,3,1]。
给定非负整数 X 的数组形式 A,返回整数 X+K 的数组形式。
解题思路:
先将 数字K转换为数组,以数组的形式相加
注意进位
代码
class Solution {
/**
* @param Integer[] $A
* @param Integer $K
* @return Integer[]
*/
function addToArrayForm($A, $K) {
$ans[0] = 0;
$K = str_split($K);
$K = array_reverse($K);
$A = array_reverse($A);
$lenA = count($A)-1;
$lenK = count($K)-1;
for($i = 0, $j = 0; $i <= $lenA, $j <= $lenK; $i++, $j++){
$ans[$i+1] = intval(($A[$i] + $K[$j] + $ans[$i]) / 10); // 进位
$ans[$i] = ($ans[$i] + $A[$i] + $K[$j]) % 10; // 取个位
}
while($i <= $lenA){ // 将剩下的数字赋值,也要注意进位
$ans[$i+1] = intval(($A[$i] + $ans[$i]) / 10);
$ans[$i] = ($A[$i] + $ans[$i]) % 10;
$i++;
}
while($j <= $lenK){
$ans[$j] = ($K[$j] + $ans[$j]) % 10;
$ans[$j+1] = intval(($K[$j] + $ans[$j]) / 10);
$j++;
}
if(end($ans) == 0){ // 首位为0,那么去掉
array_pop($ans);
}
return array_reverse($ans);
}
}