美文网首页
leetcode 43-- 乘法

leetcode 43-- 乘法

作者: Ariana不会哭 | 来源:发表于2018-12-18 08:46 被阅读0次
图片.png

http://www.cnblogs.com/TenosDoIt/p/3735309.html
话不多说,举个例子:

图片.png
后续的对乘积和进行进位处理和链接里面的内容一样,链接没有提到的就是下标有一个转换

注意:消除多余的0的时候:while (add[i] == 0&&i>0)
i不能小于0;
代码:
C++:

string multiply(string num1, string num2) {
    int m = num1.size(), n = num2.size();
    int k = m + n - 2;
    vector<int> add(n + m, 0);
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            add[k - i - j] += (num1[i] - '0')*(num2[j] - '0');
        }
    }
    int carry = 0;
    int i;
    for (i = 0; i < m + n; i++) {
        add[i] += carry;
        carry = add[i] / 10;
        add[i] = add[i] % 10;
    }
    while (add[--i] == 0)
        ;
    string ans = "";
    if (i < 0)
        return "0";
    while (i >= 0) {
        ans.push_back(add[i--] + '0');
    }
    return ans;
}

java:

public String multiply(String num1, String num2) {
        int m = num1.length(), n = num2.length();
        int k = m + n - 2;
        int add[] =new int[n + m];
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                add[k - i - j] += (num1.charAt(i)-'0')*(num2.charAt(j) - '0');
            }
        }
    
        int carry = 0;
        int i;
        for (i = 0; i < m + n; i++) {
            add[i] += carry;
            carry = add[i] / 10;
            add[i] = add[i] % 10;
        }
        i=i-1;
        while (add[i] == 0&&i>0)
            i--;
        String ans = "";
        if (i < 0)
            return "0";
        while (i >= 0) {
            ans=ans+(add[i--]);
        }
        return ans;
    }

相关文章

  • leetcode 43-- 乘法

    http://www.cnblogs.com/TenosDoIt/p/3735309.html话不多说,举个例子:...

  • 668. 乘法表中第k小的数

    668. 乘法表中第k小的数 - 力扣(LeetCode)[https://leetcode.cn/problem...

  • Divide Two Integers

    https://leetcode.com/problems/divide-two-integers/ 不能用乘法,...

  • Leetcode537. 复数乘法

    题目 给定两个表示复数的字符串。 返回表示它们乘积的字符串。注意,根据定义 i2 = -1 。 示例 1: 示例 ...

  • LeetCode-537复数乘法

    给定两个表示的字符串。返回表示它们乘积的字符串。注意,根据定义 i2 = -1 。示例 1: 输入: "1+1i"...

  • 复数乘法

    给定两个表示复数的字符串。返回表示它们乘积的字符串。注意,根据定义 i2 = -1 。 示例 1:输入: "1+1...

  • 乘法

    埃及乘法 铺地锦 画线乘法 格子乘法‘

  • 2020-10-30,乘法分配律的课前思考

    乘法分配律的课前思考 乘法分配律无论从形式还是内涵理解上,较之于乘法交换律,乘法结合律都难。因为乘法交换律、乘法结...

  • 神奇的乘法(二)

    乘法的种类已经多到计数困难了。 第六种乘法 难产的乘法:复数的乘法 因为复数出生的时候,难产,所以,这种乘法难产。...

  • 大数乘法——学会问题分解,一切迎刃而解

    经典问题大数乘法 给两个字符串格式的十进制数字,求这两个数的乘积,以字符串格式返回。leetcode问题链接[ht...

网友评论

      本文标题:leetcode 43-- 乘法

      本文链接:https://www.haomeiwen.com/subject/ugqkkqtx.html