leetcode刷题day6

day6

leetcode43、字符串相乘O(mn)(104 ms)

题目链接

/**
 * @param {string} num1
 * @param {string} num2
 * @return {string}
 */
var multiply = function(num1, num2) {
    let m = num1.length;
    let n = num2.length;
    let arr = new Array(m+n).fill(0);
    let pos = arr.length-1;

    for(let i=n-1; i>=0; i--){
        let temp = pos;   // 数组当前位置需计算的值
        let jinwei = 0;
        for(let j=m-1; j>=0; j--){        
            let val = num2[i]*num1[j]+arr[temp]; // mark1: 当前值=乘积+"进位"或者前一个竖式的计算结果
            let yu = val % 10;
            jinwei = Math.floor(val / 10);
            arr[temp] = yu;
            arr[--temp] += jinwei;   // mark2: 前一个位置为进位或者前一个竖式的计算结果

        }
        pos--;
    }

    // 找到数组的第一个非零位置
    // 如果都为0, 返回"0"
    let i = 0;
    while(arr[i]==0) i++;
    if(i==arr.length) return "0";
    return arr.slice(i).join("");

};
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页