题目: 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。
注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数。题目链接
我的JavaScript解法
/**
* @param {string} num1
* @param {string} num2
* @return {string}
*/
/**
* @param {string} num1
* @param {string} num2
* @return {string}
*/
var multiply = function(num1, num2) {
const m = num1.length;
const n = num2.length;
const result = Array(m+n).fill(0);
for(let i = m -1; i >=0; i--) {
for(let j = n-1; j>=0; j--) {
let multiplyRes = (+num1[i]) * (+num2[j]);
let p1 = i+j+1; // 低位
let p2 = i+j; // 高位
let sum = result[p1] + multiplyRes; // 上次计算p1位置的结果+这次计算的结果
result[p1] = sum % 10; //低位取余数
result[p2] += Math.floor(sum / 10); // 高位10的倍数(进位)+ 之前p2位置的结果
}
}
let index = 0;
while(index < result.length && result[index] == 0) index++;
return result.join('').slice(index, result.length) || '0'
};
解析: 模拟人工乘法运算的过程,可以计算大数乘法
- 时间复杂度:
- 空间复杂度: