golang刷leetcode技巧之如何实现大数相乘
发表于:2025-02-06 作者:千家信息网编辑
千家信息网最后更新 2025年02月06日,这篇文章将为大家详细讲解有关golang刷leetcode技巧之如何实现大数相乘,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。给定两个以字符串形式表示的非负整数 n
千家信息网最后更新 2025年02月06日golang刷leetcode技巧之如何实现大数相乘
这篇文章将为大家详细讲解有关golang刷leetcode技巧之如何实现大数相乘,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。
示例 1:
输入: num1 = "2", num2 = "3"
输出: "6"
示例 2:
输入: num1 = "123", num2 = "456"
输出: "56088"
说明:
num1 和 num2 的长度小于110。
num1 和 num2 只包含数字 0-9。
num1 和 num2 均不以零开头,除非是数字 0 本身。
不能使用任何标准库的大数类型(比如 BigInteger)或直接将输入转换为整数来处理。
解题思路:
1,两数相乘最大长度是两个数的长度相加
2,num1[i] 和 num2[j]相乘,结果只影响i+j 位和i+j+1位
r[i+j+1]+= (r[i+j]+n1[i]*n2[j])/10 r[i+j]= (r[i+j]+n1[i]*n2[j])
3,计算结果转string需要关注头部的0,如果全0,保留一个0
代码实现:
func multiply(num1 string, num2 string) string {
n1:=str2int(num1)
n2:=str2int(num2)
if n1==nil || n2==nil{
return ""
}
r:=make([]int64,len(n1)+len(n2))
for i:=0;i
for j:=0;j
r[i+j+1]+= (r[i+j]+n1[i]*n2[j])/10
r[i+j]= (r[i+j]+n1[i]*n2[j])
}
}
var s string
j:=len(r)-1
for j>0 && r[j]==0{
j--
}
for i:=0;i<=j;i++{
s=fmt.Sprintf("%d",r[i])+s
}
return s
}
func str2int(num string )[]int64{
if len(num)==0{
return nil
}
var r []int64
for i:=0;i
v,err:=strconv.ParseInt(string([]byte{num[i]}),10,10)
if err!=nil{
return nil
}
r=append([]int64{v},r...)
}
return r
}
关于"golang刷leetcode技巧之如何实现大数相乘"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
大数
篇文章
长度
输入
技巧
两个
乘积
字符
字符串
形式
数字
整数
更多
示例
结果
输出
不错
实用
最大
代码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库高级
文森特打服务器
郑州汇众软件开发
网络安全代码制作
网络安全十不准七不得
鸿蒙万物互联网络安全
文件管理 轻量云服务器
linux服务器性能调优
方舟mod服务器加载失败
plsql 数据库 ip
每年网络安全宣传周时间
碧蓝档案服务器请求处理失败
服务器 风扇 改
北京市公安局网络安全总队号码
sqlserver创建数据库语句
手机数据库软件排行榜
可以使用代理服务器的电视盒子
软件开发测试奖惩
数据库中保证相关的记录
法学数据库的数据类型
江门嵌入式软件开发机构
莫工科技数据库
机器人软件开发专业前景
6月国家网络安全清查
软件开发企业属于工业企业
校园网络安全事件应急演练
网络安全形成的原因有哪些
金三角小说软件开发
万文数据库
人物模型制作软件开发