167-链表求和

你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。

样例

给出两个链表 3->1->5->null 和 5->9->2->null,返回 8->0->8->null

标签

链表 Cracking The Coding Interview 高精度

思路

遍历 2 个链表(即从各位开始进行加法),新建节点保存 2 个节点与上一位的进位 carry 的和,并重置 carry
需要注意的是,若链表最高位之和大于 10 ,需要再新建最高位节点

code

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:/*** @param l1: the first list* @param l2: the second list* @return: the sum list of l1 and l2 */ListNode *addLists(ListNode *l1, ListNode *l2) {// write your code hereListNode *head = new ListNode(0);ListNode *temp = head;int carry = 0;while (l1!= NULL && l2 != NULL) {int sum = l1->val + l2->val + carry;ListNode *node = new ListNode(sum % 10);carry = (sum >= 10);temp->next = node;l1 = l1->next;l2 = l2->next;temp = temp->next;}while (l1 != NULL) {int sum = l1->val + carry;ListNode *node = new ListNode(sum % 10);carry = (sum >= 10);temp->next = node;l1 = l1->next;temp = temp->next;}while (l2 != NULL) {int sum = l2->val + carry;ListNode *node = new ListNode(sum % 10);carry = (sum >= 10);temp->next = node;l2 = l2->next;temp = temp->next;}if (l1 == NULL && l2 == NULL && carry == 1) {ListNode *node = new ListNode(carry);temp->next = node;}return head->next;}
};

转载于:https://www.cnblogs.com/libaoquan/p/7276889.html

lintcode-167-链表求和相关推荐

  1. Lintcode 167. 链表求和 221. 链表求和 II 题解

    167. 链表求和 描述 你有两个用链表代表的整数,其中每个节点包含一个数字.数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头.写出一个函数将两个整数相加,用链表形式返回和. 样例 给 ...

  2. lintcode_167. 链表求和

    lintcode 167. 链表求和 描述:你有两个用链表代表的整数,其中每个节点包含一个数字.数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头.写出一个函数将两个整数相加,用链表形式 ...

  3. 面试题 02.05. 链表求和

    面试题 02.05. 链表求和 给定两个用链表表示的整数,每个节点包含一个数位. 这些数位是反向存放的,也就是个位排在链表首部. 编写函数对这两个整数求和,并用链表形式返回结果. 示例: 输入:(7 ...

  4. 程序员面试金典 - 面试题 02.05. 链表求和

    1. 题目 给定两个用链表表示的整数,每个节点包含一个数位. 这些数位是反向存放的,也就是个位排在链表首部. 编写函数对这两个整数求和,并用链表形式返回结果. 示例: 输入:(7 -> 1 -& ...

  5. LintCode 173:链表插入排序

    描述 用插入排序对链表排序 样例 样例 1:输入: 0->null输出: 0->null样例 2:输入: 1->3->2->0->null输出 :0->1-& ...

  6. LintCode 207. 区间求和 II(线段树)

    1. 题目 在类的构造函数中给一个整数数组, 实现两个方法 query(start, end) 和 modify(index, value): 对于 query(start, end), 返回数组中下 ...

  7. LintCode 1689. k求和III(递归)

    1. 题目 给出 n 个正整数和整数 k 以及一个目标数字 target. 在 n 个数中找出 k 个奇数 或 k 个偶数 使得和为target,输出方案数 样例 1: 给出 `[1,2,3,4], ...

  8. lintcode 简单篇(二)

    1.(41) 最大子数组 描述:给定一个整数数组,找到一个具有最大和的子数组,返回其最大和. 注意事项:子数组最少包含一个数 样例:给出数组[−2,2,−3,4,−1,2,1,−5,3],符合要求的子 ...

  9. LeetCode——链表

    LeetCode--链表 目录 概述 找出两个链表的交点 链表反转 归并两个有序的链表 从有序链表中删除重复节点 删除链表的倒数第n个节点 交换链表中的相邻节点 链表求和 回文链表 分隔链表 链表元素 ...

  10. LeetCode Hot100 ---- 链表专题专题

    链表 力扣109:将有序链表转化为二叉搜素树 力扣141:环形链表判断是否有环 力扣142:环形链表检测入口位置 力扣143:重拍链表 力扣160:相交链表 力扣206:反转链表 力扣21:合并两个有 ...

最新文章

  1. python编程入门电子书下载-Python编程基础如何快速入门?“附电子书下载”
  2. noip2016 换教室
  3. 【Python】is 和 == 的区别
  4. sqlite数据库的基本增删改查操作
  5. Iterator模式
  6. dbgrid 获取前台页面参数
  7. Linux操作系统PS命令详细解析
  8. JAVA地址连接状态检测工具类
  9. 当当网推“搜索+个性化”
  10. 前言【高等数学教程(单变量微积分)】
  11. php递归5,5.5.1 PHP递归函数
  12. 直播送礼物html,哈你直播如何送礼物 哈你直播给主播送礼物步骤【详解】
  13. python-提取特征 特征选择
  14. 分享在实际项目中积累的硬件调试经验 - 调试方法,以及常见调试案例
  15. oracle判断不包含,oracle查询不含括号及不含指定字符的方法
  16. 澳大利亚莫纳什大学推出公开漏洞奖励计划
  17. 为什么z-index在众多标签中失效
  18. cesium--绘制多边形polygon
  19. 蓝桥杯 试题 B 既约分数
  20. Linux 远程桌面 速度快,虫洞TCP加速,提升远程桌面和SSH访问速度

热门文章

  1. *33.硬中断和软中断是什么?区别?
  2. 原理 msc_解析应用在气象站中的GPRS通信原理及优势
  3. android 发送前台广播,使用IntentService与BroadcastReceiver实现后台服务(Android7.0可用)...
  4. Eclipse搭建Mybatis框架
  5. MySQL查询输入三个数的和_mysql(三)(单表查询、select、where、聚合函数、count、sum、avg、MAX/MIN、分组查询、group by、having、limit)...
  6. 得到Android设备的唯一id
  7. 安装mysql为什么下载了很多_mysql下载与安装过程
  8. des vue 双倍长 解密_[转]单倍长密钥加密和双倍长密钥加密,银联直联终端62域难点详解...
  9. linux安全狗 nginx,linux 下 safedog 防护 Nginx
  10. pytorch 查看当前学习率_pytorch调整模型训练的学习率