LeetCode43.字符串相乘【大整数相乘】

在这里插入图片描述

LeetCode刷题记录


📜题目描述

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

注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数。

示例1

输入: num1 = "2", num2 = "3"
输出: "6"

示例1

输入: num1 = "123", num2 = "456"
输出: "56088"

提示:

  • 1 <= num1.length, num2.length <= 200
  • num1 和 num2 只能由数字组成。
  • num1 和 num2 都不包含任何前导零,除了数字0本身。

💡解题思路

解法1
image-20220917190830777
代码1
在这里插入图片描述
对于解法1来说,时间复杂度:O(MN+N^2)

M为num1的长度,N为num2的长度

外层:N , 内层:遍历num1:M,字符串相加(最大为M+N)

​ 内层整体取M+N

所以整体是M*N+N^2


解法2

该算法是通过两数相乘时,乘数某位与被乘数某位相乘,与产生结果的位置的规律来完成

乘数num1的长度为M,num2的长度为N

那么他们的结果的位数不会超过M+N(一位数*两位数结果最大也就3位数 99*9),假设存放在串mul

对于串num1,和串num2num1[i]*num2[j]的结果一定是两位数并且小于等于81,"xy"形式或者"0y形式",其中第一位位于mul[i+j],第二位位于mul[i+j+1]

如图所示:

image-20220917200525530

所以,思路就是:

  1. 首先new一个M+N大小的int数组mul用于存放最后结果
  2. 然后依次把num1[i]与num2[j]相乘的结果 追加到 mul[i+j+1]位置,然后让mul[i+j]位置 += mul[i+j+1]%10 , mul[i+j+1]位置/=10

最后的整型数组用一个string依次拼接就是目标结果
代码2
在这里插入图片描述

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-06-17 08:56:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-17 08:56:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-17 08:56:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-17 08:56:03       18 阅读

热门阅读

  1. 算法第七天:leetcode之209.长度最小的子数组

    2024-06-17 08:56:03       6 阅读
  2. leetcode198 打家劫舍

    2024-06-17 08:56:03       8 阅读
  3. 结构型模式-享元模式

    2024-06-17 08:56:03       7 阅读
  4. CMake Tutorial (3.30-rc3版) 练习和点评

    2024-06-17 08:56:03       8 阅读
  5. HTML中的<br>、<hr>和<pre>标签使用指南

    2024-06-17 08:56:03       8 阅读
  6. 重庆思庄技术分享——启动Oracle下最小追踪日志

    2024-06-17 08:56:03       7 阅读
  7. vue实现图片预览

    2024-06-17 08:56:03       6 阅读
  8. 「C系列」C 文件读写

    2024-06-17 08:56:03       7 阅读
  9. 后端开发面试题4(附答案)

    2024-06-17 08:56:03       7 阅读
  10. C++ 二分查找法【面试】

    2024-06-17 08:56:03       7 阅读
  11. 1、C++编程中的基本运算 - 课件

    2024-06-17 08:56:03       7 阅读
  12. SpringSecurity(JWT、SecurityConfig、Redis)

    2024-06-17 08:56:03       6 阅读
  13. API 类别 - 特效核心

    2024-06-17 08:56:03       5 阅读
  14. Linux 基础IO 三

    2024-06-17 08:56:03       6 阅读
  15. 你应该知道的口语连读技巧

    2024-06-17 08:56:03       6 阅读
  16. Rust创建基准测试bench

    2024-06-17 08:56:03       6 阅读
  17. AWS无服务器 应用程序开发—第十三章 小结2

    2024-06-17 08:56:03       5 阅读