LeetCode-Problem 43:大数相乘

这篇博客介绍了LeetCode中的问题43,涉及如何解决两个非负整数的大数相乘。算法实现部分展示了利用位运算进行大数相乘的基本思路,并提到了Karatsuba算法和FFT快速傅里叶变换作为其他常见解决方案。
摘要由CSDN通过智能技术生成

算法问题

给定两个以字符串表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积。

算法实现

以下是大神的算法,膜拜大神

首先,长度位m的数乘以长度为n的数的结果不超过m+n。

接下来,我们来看下两数相乘的计算过程,从右向左,将数2中的每一位的数与数1相乘,最后将结果相加。下图演示的是两数相乘的整个过程,从下图中,我们可以得到,对于num[i] *num[j](数1中的第i位数字与数2中的第j位数字相乘的结果只会存放在第【i+j】和【i+j+1】这两位上)

这里写图片描述

因此,我们实现算法如下:

  public static String multiply(String num1, String num2) {
        int m = num1.length(), n = num2.length();
        int[] 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值