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.

  1. class Solution {
  2. public:
  3. string multiply(string num1, string num2) {
  4. vector<int> a, b;
  5.  
  6. for(int i=num1.length()-;i>=;--i) a.push_back(num1[i] - '');
  7. for(int i=num2.length()-;i>=;--i) b.push_back(num2[i] - '');
  8.  
  9. vector<int> res(a.size()+b.size());
  10. for(int i=;i<res.size();++i) res[i] = ;
  11.  
  12. for(int i=;i<a.size();++i) {
  13. for(int j=;j<b.size();++j) {
  14. res[i+j] += a[i] * b[j];
  15. }
  16. }
  17.  
  18. for(int i=;i<res.size();++i) {
  19. if(res[i]>=) {
  20. res[i+] += res[i]/;
  21. res[i] = res[i]%;
  22. }
  23. }
  24. //for(int i=0;i<res.size();++i) cout<<res[i]<<" ";
  25. //cout<<endl;
  26. while(res[res.size()-] == ) {
  27. if(res.size() == ) break;
  28. res.pop_back();
  29. }
  30.  
  31. string sres = "";
  32. for(int i=res.size()-;i>=;--i) sres += res[i] + '';
  33. return sres;
  34. }
  35. };

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

  1. /**
  2. * Definition for singly-linked list.
  3. * struct ListNode {
  4. * int val;
  5. * ListNode *next;
  6. * ListNode(int x) : val(x), next(NULL) {}
  7. * };
  8. */
  9. class Solution {
  10. public:
  11. ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
  12. vector<int> na; na.clear();
  13. vector<int> nb; nb.clear();
  14.  
  15. while(l1) {
  16. na.push_back(l1->val);
  17. l1 = l1->next;
  18. }
  19.  
  20. while(l2) {
  21. nb.push_back(l2->val);
  22. l2 = l2->next;
  23. }
  24.  
  25. vector<int> sum(max(na.size(), nb.size()) + );
  26. for(int i=;i<sum.size();++i) sum[i] = ;
  27.  
  28. int i=;
  29. for(;i<min(na.size(), nb.size());++i) sum[i] = na[i] + nb[i];
  30. for(;i<max(na.size(), nb.size());++i) sum[i] = max(na.size(), nb.size())==na.size() ? na[i]: nb[i];
  31.  
  32. for(int i=;i<sum.size()-;++i) {
  33. if(sum[i] >= ) {
  34. sum[i+] += sum[i] / ;
  35. sum[i] = sum[i] % ;
  36. }
  37. }
  38.  
  39. if(sum[sum.size()-] == ) sum.pop_back();
  40.  
  41. ListNode *head = new ListNode(-);
  42. ListNode *r = head, *s;
  43. for(int i=;i<sum.size();++i) {
  44. s = new ListNode(-);
  45. s->val = sum[i];
  46. r->next = s;
  47. r = s;
  48. }r->next = NULL;
  49.  
  50. head = head->next;
  51.  
  52. return head;
  53. }
  54. };

leetcode@ [2/43] Add Two Numbers / Multiply Strings(大整数运算)的更多相关文章

  1. Multiply Strings大整数乘法

    [抄题]: 以字符串的形式给定两个非负整数 num1 和 num2,返回 num1 和 num2 的乘积. [暴力解法]: 时间分析: 空间分析: [思维问题]: 还要找到结果中第一位不等于0的数再添 ...

  2. leetcode 第二题Add Two Numbers java

    链接:http://leetcode.com/onlinejudge Add Two Numbers You are given two linked lists representing two n ...

  3. LeetCode 第二题 Add Two Numbers 大整数加法 高精度加法 链表

    题意 You are given two non-empty linked lists representing two non-negative integers. The digits are s ...

  4. 【LeetCode】445. Add Two Numbers II 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 先求和再构成列表 使用栈保存节点数字 类似题目 日期 ...

  5. 《LeetBook》LeetCode题解(2):Add Two Numbers [M]

    我现在在做一个叫<leetbook>的免费开源书项目,力求提供最易懂的中文思路,目前把解题思路都同步更新到gitbook上了,需要的同学可以去看看 书的地址:https://hk029.g ...

  6. C# 写 LeetCode Medium #2 Add Two Numbers

    2. Add Two Numbers You are given two non-empty linked lists representing two non-negative integers. ...

  7. Add Strings大整数加法十进制求和 & Add Binary二进制求和

    [抄题]: 以字符串的形式给出两个非负整数 num1 和 num2,返回 num1和 num2 的和. 比如一个50位+一个100位. 给定 num1 = "123",num2 = ...

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

    题目描述 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. 示例 1: 输入: num1 = "2" ...

  9. 【一天一道leetcode】 #2 Add Two Numbers

    一天一道leetcode系列 (一)题目: You are given two linked lists representing two non-negative numbers. The digi ...

随机推荐

  1. MyEclipse中创建maven工程

    转载:http://blog.sina.com.cn/s/blog_4f925fc30102epdv.html     先要在MyEclipse中对Maven进行设置: 到此Maven对MyEclip ...

  2. 24点C++程序实现 编程之美1.16

    解法1,对于任意输入的四个数字,给出一个24点的解法,若无解,则没有输出. 原理参照下图(编程之美原书) 代码如下,仅供参考 // 1.16.cpp : Defines the entry point ...

  3. MAC 上搭建lua环境

    一.下载并安装 (1)最新release版下载地址 http://www.lua.org/ftp/lua-5.3.1.tar.gz (2)编译 Building Lua is implemented ...

  4. chinacloud大数据新闻

    2015年大数据发展八大趋势   (0 篇回复) “数据很丰满,信息很骨感”:Sight Machine想用大数据的方法,打碎两者间的屏障   (0 篇回复) 百度携大数据"圈地" ...

  5. It is indirectly referenced from required .class files

    配置eclipse的导入包,有些包引用的位置不正确

  6. gdb调试SAPI方式的php

    一.修改php-fpm.conf文件 /usr/local/php/etc/php-fpm.conf pm.max_children = 1 #只产生一个进程,便于追踪 二.得到进行服务的进程号 [r ...

  7. UVa 10214 (莫比乌斯反演 or 欧拉函数) Trees in a Wood.

    题意: 这道题和POJ 3090很相似,求|x|≤a,|y|≤b 中站在原点可见的整点的个数K,所有的整点个数为N(除去原点),求K/N 分析: 坐标轴上有四个可见的点,因为每个象限可见的点数都是一样 ...

  8. ZJOI2008泡泡堂BNB

    1034: [ZJOI2008]泡泡堂BNB Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1305  Solved: 676[Submit][Sta ...

  9. apache开源项目--Shiro

    安全是企业应用中不可缺少的功能,在众多权限框架中,Shiro(其前身是JSecurity)因其简单而又不失强大的特点引起了不少开发者的注 意.随着Grails的关注度越来越高,在Grails社区也出现 ...

  10. 陈正冲老师讲c语言void关键字

    1. void a void的字面意思是“空类型”,void *则为“空类型指针”,void *可以指向任何类型的数据. void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量 ...