leetcode@ [2/43] Add Two Numbers / Multiply Strings(大整数运算)
https://leetcode.com/problems/multiply-strings/
Given two numbers represented as strings, return multiplication of the numbers as a string.
Note: The numbers can be arbitrarily large and are non-negative.
- class Solution {
- public:
- string multiply(string num1, string num2) {
- vector<int> a, b;
- for(int i=num1.length()-;i>=;--i) a.push_back(num1[i] - '');
- for(int i=num2.length()-;i>=;--i) b.push_back(num2[i] - '');
- vector<int> res(a.size()+b.size());
- for(int i=;i<res.size();++i) res[i] = ;
- for(int i=;i<a.size();++i) {
- for(int j=;j<b.size();++j) {
- res[i+j] += a[i] * b[j];
- }
- }
- for(int i=;i<res.size();++i) {
- if(res[i]>=) {
- res[i+] += res[i]/;
- res[i] = res[i]%;
- }
- }
- //for(int i=0;i<res.size();++i) cout<<res[i]<<" ";
- //cout<<endl;
- while(res[res.size()-] == ) {
- if(res.size() == ) break;
- res.pop_back();
- }
- string sres = "";
- for(int i=res.size()-;i>=;--i) sres += res[i] + '';
- return sres;
- }
- };
https://leetcode.com/problems/add-two-numbers/
You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
- /**
- * Definition for singly-linked list.
- * struct ListNode {
- * int val;
- * ListNode *next;
- * ListNode(int x) : val(x), next(NULL) {}
- * };
- */
- class Solution {
- public:
- ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
- vector<int> na; na.clear();
- vector<int> nb; nb.clear();
- while(l1) {
- na.push_back(l1->val);
- l1 = l1->next;
- }
- while(l2) {
- nb.push_back(l2->val);
- l2 = l2->next;
- }
- vector<int> sum(max(na.size(), nb.size()) + );
- for(int i=;i<sum.size();++i) sum[i] = ;
- int i=;
- for(;i<min(na.size(), nb.size());++i) sum[i] = na[i] + nb[i];
- for(;i<max(na.size(), nb.size());++i) sum[i] = max(na.size(), nb.size())==na.size() ? na[i]: nb[i];
- for(int i=;i<sum.size()-;++i) {
- if(sum[i] >= ) {
- sum[i+] += sum[i] / ;
- sum[i] = sum[i] % ;
- }
- }
- if(sum[sum.size()-] == ) sum.pop_back();
- ListNode *head = new ListNode(-);
- ListNode *r = head, *s;
- for(int i=;i<sum.size();++i) {
- s = new ListNode(-);
- s->val = sum[i];
- r->next = s;
- r = s;
- }r->next = NULL;
- head = head->next;
- return head;
- }
- };
leetcode@ [2/43] Add Two Numbers / Multiply Strings(大整数运算)的更多相关文章
- Multiply Strings大整数乘法
[抄题]: 以字符串的形式给定两个非负整数 num1 和 num2,返回 num1 和 num2 的乘积. [暴力解法]: 时间分析: 空间分析: [思维问题]: 还要找到结果中第一位不等于0的数再添 ...
- leetcode 第二题Add Two Numbers java
链接:http://leetcode.com/onlinejudge Add Two Numbers You are given two linked lists representing two n ...
- LeetCode 第二题 Add Two Numbers 大整数加法 高精度加法 链表
题意 You are given two non-empty linked lists representing two non-negative integers. The digits are s ...
- 【LeetCode】445. Add Two Numbers II 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 先求和再构成列表 使用栈保存节点数字 类似题目 日期 ...
- 《LeetBook》LeetCode题解(2):Add Two Numbers [M]
我现在在做一个叫<leetbook>的免费开源书项目,力求提供最易懂的中文思路,目前把解题思路都同步更新到gitbook上了,需要的同学可以去看看 书的地址:https://hk029.g ...
- C# 写 LeetCode Medium #2 Add Two Numbers
2. Add Two Numbers You are given two non-empty linked lists representing two non-negative integers. ...
- Add Strings大整数加法十进制求和 & Add Binary二进制求和
[抄题]: 以字符串的形式给出两个非负整数 num1 和 num2,返回 num1和 num2 的和. 比如一个50位+一个100位. 给定 num1 = "123",num2 = ...
- LeetCode 43. 字符串相乘(Multiply Strings) 大数乘法
题目描述 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. 示例 1: 输入: num1 = "2" ...
- 【一天一道leetcode】 #2 Add Two Numbers
一天一道leetcode系列 (一)题目: You are given two linked lists representing two non-negative numbers. The digi ...
随机推荐
- MyEclipse中创建maven工程
转载:http://blog.sina.com.cn/s/blog_4f925fc30102epdv.html 先要在MyEclipse中对Maven进行设置: 到此Maven对MyEclip ...
- 24点C++程序实现 编程之美1.16
解法1,对于任意输入的四个数字,给出一个24点的解法,若无解,则没有输出. 原理参照下图(编程之美原书) 代码如下,仅供参考 // 1.16.cpp : Defines the entry point ...
- MAC 上搭建lua环境
一.下载并安装 (1)最新release版下载地址 http://www.lua.org/ftp/lua-5.3.1.tar.gz (2)编译 Building Lua is implemented ...
- chinacloud大数据新闻
2015年大数据发展八大趋势 (0 篇回复) “数据很丰满,信息很骨感”:Sight Machine想用大数据的方法,打碎两者间的屏障 (0 篇回复) 百度携大数据"圈地" ...
- It is indirectly referenced from required .class files
配置eclipse的导入包,有些包引用的位置不正确
- gdb调试SAPI方式的php
一.修改php-fpm.conf文件 /usr/local/php/etc/php-fpm.conf pm.max_children = 1 #只产生一个进程,便于追踪 二.得到进行服务的进程号 [r ...
- UVa 10214 (莫比乌斯反演 or 欧拉函数) Trees in a Wood.
题意: 这道题和POJ 3090很相似,求|x|≤a,|y|≤b 中站在原点可见的整点的个数K,所有的整点个数为N(除去原点),求K/N 分析: 坐标轴上有四个可见的点,因为每个象限可见的点数都是一样 ...
- ZJOI2008泡泡堂BNB
1034: [ZJOI2008]泡泡堂BNB Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1305 Solved: 676[Submit][Sta ...
- apache开源项目--Shiro
安全是企业应用中不可缺少的功能,在众多权限框架中,Shiro(其前身是JSecurity)因其简单而又不失强大的特点引起了不少开发者的注 意.随着Grails的关注度越来越高,在Grails社区也出现 ...
- 陈正冲老师讲c语言void关键字
1. void a void的字面意思是“空类型”,void *则为“空类型指针”,void *可以指向任何类型的数据. void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量 ...