LeetCode 43. 字符串相乘(大数乘法)

文章目录

    • 1. 题目
    • 2. 小学竖式乘法
      • 2.1 普通版
      • 2.2 优化版

1. 题目

给定两个以字符串形式表示的非负整数 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)或转换为整数来处理。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/multiply-strings
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

类似题目:LeetCode 415. 字符串相加(大数加法)

2. 小学竖式乘法

2.1 普通版

在这里插入图片描述

class Solution {
public:string multiply(string num1, string num2) {if(num1 == "0" || num2 == "0")return "0";int n1 = num1.size(), n2 = num2.size(), i, j;int bit1, bit2, carry, zero, curBit;string ans, temp;for(i = n2-1; i >= 0; i--){carry = 0;//进位清零temp = "";//临时乘积zero = n2-1-i;//后置添0个数while(zero--)temp.push_back('0');bit2 = num2[i]-'0';for(j = n1-1; j >= 0 || carry != 0; --j){bit1 = j < 0 ? 0 : (num1[j]-'0');curBit = (bit1*bit2+carry)%10;temp.push_back(curBit+'0');carry = (bit1*bit2+carry)/10;}reverse(temp.begin(),temp.end());//上面临时乘积是逆序的ans = addStrings(ans,temp);//调用大数加法}return ans;}//LeetCode 415. 字符串相加(大数加法)string addStrings(string num1, string num2) {int n1 = num1.length(), n2 = num2.length();int i = n1-1, j = n2-1, one = 0, bit1, bit2, curBit;string ans;for( ; i >= 0 || j >= 0; --i,--j){bit1 =  i<0 ? 0 : (num1[i]-'0');bit2 =  j<0 ? 0 : (num2[j]-'0');curBit = (bit1+bit2+one)%10;one = (bit1+bit2+one)/10;ans.push_back(curBit+'0');}if(one)ans.push_back('1');reverse(ans.begin(),ans.end());return ans;}
};

在这里插入图片描述

2.2 优化版

在这里插入图片描述

class Solution {
public:string multiply(string num1, string num2) {if(num1 == "0" || num2 == "0")return "0";int n1 = num1.size(), n2 = num2.size(), i, j, curSum;int bit1, bit2, len = n1+n2;int res[len] = {0};//两数的乘积最多是n1+n2位string ans, temp;for(i = n2-1; i >= 0; i--){bit2 = num2[i]-'0';for(j = n1-1; j >= 0; --j){bit1 = num1[j]-'0';curSum = res[i+j+1] + bit1*bit2;res[i+j+1] = curSum % 10;res[i+j] += curSum / 10;}}for(i = 0; i < len; ++i){if(i == 0 && res[i] == 0)continue;//前面可能有一个0,跳过ans.append(to_string(res[i]));}return ans;}
};

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478344.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

旅游推荐系统的演进

度假业务在整个在线旅游市场中占据着非常重要的位置&#xff0c;如何做好做大这块蛋糕是行业内的焦点。与美食或酒店的用户兴趣点明确&#xff08;比如找某个确定的餐厅或者找某个目的地附近的酒店&#xff09;不同&#xff0c;旅游场景中的用户兴趣点&#xff08;比如周末去哪…

预训练卷不动,可以卷输入预处理啊!

文 | 德志编 | 小戏目前伴随着预训练预言模型的兴起&#xff0c;越来越多的 NLP 任务开始脱离对分词的依赖。通过 Fine-Tune Bert 这类预训练预言模型&#xff0c;能直接在下游任务上取得一个很好的结果。同时也有文章探讨中文分词在神经网络时代的必要性。对于分词任务本身也是…

检索式问答以及评论观点抽取+情感分析

3款开发者神器&#xff0c;快速搭建「检索、问答、情感分析」应用&#xff01; 人工智能与算法学习 于 2021-12-30 08:10:00 发布 26 收藏 文章标签&#xff1a; 百度 大数据 机器学习 人工智能 数据分析 原文链接&#xff1a;https://mp.weixin.qq.com/s?__bizMzIyOTkyOTE…

征稿 | Call for papers on Knowledge Graphs

Knowledge graph是Data Intelligence的核心主题和期刊特色之一。为持续展示这一领域的最新进展和前沿成果&#xff0c;Data Intelligence正在与国际学者一道策划两期Knowledge graph专辑。期待大家关注并积极投稿参与&#xff01;DI专辑Special Issue on Personal Health Knowl…

LeetCode 179. 最大数(自定义谓词函数--Lambda表达式--排序)

1. 题目 给定一组非负整数&#xff0c;重新排列它们的顺序使之组成一个最大的整数。 示例 1: 输入: [10,2] 输出: 210示例 2: 输入: [3,30,34,5,9] 输出: 9534330 说明: 输出结果可能非常大&#xff0c;所以你需要返回一个字符串而不是整数。来源&#xff1a;力扣&#xff08…

python实现requests访问接口,比如es接口

首先我们先引入requests模块 import requests一、发送请求 r requests.get(https://api.github.com/events) # GET请求 r requests.post(http://httpbin.org/post, data {key:value}) # POST请求 r requests.put(http://httpbin.org/put, data {key:value}) # PUT请求 r…

拿下字节offer,这些面试题命中率高达90%以上

昨天在知乎上刷到一个热门问题:程序员需要达到什么水平才能顺利拿到 20k 无压力&#xff1f;其中一个最热门的回答是&#xff1a;“其实&#xff0c;无论你是前端还是后端、想进大厂还是拿高薪&#xff0c;算法都一定很重要。”为什么&#xff0c;算法会如此重要&#xff1f;不…

HDFS NameNode重启优化

本文已发表于InfoQ&#xff0c;下面的版本又经过少量修订。 一、背景 在Hadoop集群整个生命周期里&#xff0c;由于调整参数、Patch、升级等多种场景需要频繁操作NameNode重启&#xff0c;不论采用何种架构&#xff0c;重启期间集群整体存在可用性和可靠性的风险&#xff0c;所…

LeetCode 4. 寻找两个有序数组的中位数(二分查找,难)

文章目录1. 题目2. 解题2.1 合并数组2.2 优化2.1解法&#xff0c;双指针2.3 二分法&#xff08;找第k个数&#xff09;2.4 切分法1. 题目 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。 请你找出这两个有序数组的中位数&#xff0c;并且要求算法的时间复杂度为O(log(mn…

论文浅尝 | 当Hearst还不够时:用分布模型来提升语料库中的上下义关系检测

笔记整理 | 潘晓梅&#xff0c;东南大学硕士&#xff0c;研究方向为知识图谱构建、自然语言处理。来源&#xff1a;EMNLP 2020.论文下载地址&#xff1a; https://www.aclweb.org/anthology/2020.emnlp-main.502.pdf项目源码地址&#xff1a; https://github.com/ccclyu/ComHyp…

LeetCode 887. 鸡蛋掉落(DP,难、不懂)

1. 题目 你将获得 K 个鸡蛋&#xff0c;并可以使用一栋从 1 到 N 共有 N 层楼的建筑。 每个蛋的功能都是一样的&#xff0c;如果一个蛋碎了&#xff0c;你就不能再把它掉下去。 你知道存在楼层 F &#xff0c;满足 0 < F < N 任何从高于 F 的楼层落下的鸡蛋都会碎&…

正确的LeetCode刷题姿势!

名师 带你刷爆LeetCode算法知识 讲解训练免费0元报名参加在讲到 AI 算法工程师时&#xff0c;大部分同学关注点都在高大上的模型&#xff0c;一线优秀的项目。但大家往往忽略了一点&#xff0c;人工智能的模型、项目最终还是要靠程序和算法实现。算法能力是每一个程序员的基本功…

论文浅尝 | DI刊发的那些有关Knowledge Graph的论文

本文转载自公众号&#xff1a;数据智能英文刊知识图谱被称为人工智能的基石&#xff0c;它的前身是语义网&#xff0c;由谷歌在2012年率先提出&#xff0c;用于改善自身的搜索业务。Data Intelligence执行主编、东南大学计算机科学与技术学院漆桂林教授这样定义知识图谱&#x…

缓存那些事

本文已发表于《程序员》杂志2017年第3期&#xff0c;下面的版本又经过进一步的修订。 一般而言&#xff0c;现在互联网应用&#xff08;网站或App&#xff09;的整体流程&#xff0c;可以概括如图1所示&#xff0c;用户请求从界面&#xff08;浏览器或App界面&#xff09;到网络…

LeetCode 42. 接雨水(双指针、单调栈)

文章目录1. 题目2. 解题2.1 正反扫描法2.2 双指针2.3 单调栈1. 题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图&#xff0c;在这种情况下&am…

论文浅尝 - IJCAI | Knowledge is NOT always you need: 外部知识注入预训练模型的利与弊...

转载公众号 | 浙大KG论文题目&#xff1a;Drop Redundant, Shrink Irrelevant: Selective Knowledge Injection for Language Model Pretraining本文作者&#xff1a;张宁豫&#xff08;浙江大学&#xff09;、邓淑敏&#xff08;浙江大学&#xff09;、张亦弛&#xff08;阿里…

圆形的CNN卷积核?华中大清华康奈尔提出圆形卷积,进一步提升卷积结构性能!...

文 | 小马编 | 极市平台写在前面目前正常卷积的感受野大多都是一个矩形的&#xff0c;因为矩形更有利于储存和计算数据的方便。但是&#xff0c;人类视觉系统的感受野更像是一个圆形的。因此&#xff0c;作者就提出&#xff0c;能不能将CNN卷积核的感受野也变成圆形呢&#xff…

Android自定义Lint实践

Android Lint是Google提供给Android开发者的静态代码检查工具。使用Lint对Android工程代码进行扫描和检查&#xff0c;可以发现代码潜在的问题&#xff0c;提醒程序员及早修正。 为保证代码质量&#xff0c;美团在开发流程中加入了代码检查&#xff0c;如果代码检测到问题&…

关于PaddleNLP如何加载训练好的模型进行NER

关于PaddleNLP如何加载训练好的模型进行NER 关于PaddleNLP如何加载训练好的模型进行NER 当时在如何加载已经训练好的模型的问题上花了很长时间&#xff0c;后来也是受另一篇文章启发&#xff0c;问题才得以解决&#xff0c;此文章写的很详细&#xff0c;所以不再详细介绍&#…

论文浅尝 | 利用机器翻译和多任务学习进行复杂的知识图谱问答

笔记整理 | 谭亦鸣&#xff0c;东南大学博士生。来源&#xff1a;EACL‘21链接&#xff1a;https://www.aclweb.org/anthology/2021.eacl-main.300.pdf概述知识图谱问答过程一般包括实体链接&#xff0c;多跳推理等步骤&#xff0c;传统方法将各个步骤作为模块单独处理&#xf…