You are given two non-empty linked lists representing two non-negative integers. 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.

You may assume the two numbers do not contain any leading zero, except the number 0 itself.

Example

Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
Explanation: 342 + 465 = 807.

题目意思看例子。从头往尾相加,超过10就要往后进位。除了下面代码的方法,也可以设置一个flag,表示要不要进位。而下面代码是直接将每次的和留到下一次,让下一次自己判断。效果一样。

这题因为给你的是链表,所以如果想把链表转成整数,然后相加,可能会造成溢出。所以此方法行不通。
仔细观察例子,其实就是从头往尾遍历,相加,当两个节点的和没有超过10,那就直接形成新节点,新节点的值就是这个值。如果相加的和超过了10,这是新节点的值应该就是这个和%10(如6+8=14,新节点的值就是4),此时还需要进位,进位给后一个节点(sum/10)。这里用sum表示两个数的和,同时这个和还要加上前一个的进位(就是前一个和/10,)。

/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
if(l1==null||l2==null) return null;
ListNode res=new ListNode(0);
ListNode p=res;
int carry=0;
while(l1!=null||l2!=null){
int sum=carry;
if(l1!=null){ sum+=l1.val;l1=l1.next;}
if(l2!=null) {sum+=l2.val;l2=l2.next;}
p.next=new ListNode(sum%10);
p=p.next;
carry=sum/10; }
if(carry!=0) p.next=new ListNode(carry);
return res.next;
}
}

add two numbers(将两个链表相加)的更多相关文章

  1. 20.Add Two Numbers(两个链表的和)

    Level:   Medium 题目描述: You are given two non-empty linked lists representing two non-negative integer ...

  2. [LeetCode] 445. Add Two Numbers II 两个数字相加之二

    You are given two linked lists representing two non-negative numbers. The most significant digit com ...

  3. 2. Add Two Numbers[M]两数相加

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

  4. [LeetCode] Add Two Numbers II 两个数字相加之二

    You are given two linked lists representing two non-negative numbers. The most significant digit com ...

  5. leetcode-2 Add Two Numbers 计算两个对应的列表和问题

     1.问题描写叙述: You are given two linked lists representing two non-negativenumbers. The digits are sto ...

  6. leetcode 题解 Add Two Numbers(两个单链表求和)

    题目: You are given two linked lists representing two non-negative numbers. The digits are stored in r ...

  7. [leetcode]445. Add Two Numbers II 两数相加II

    You are given two non-empty linked lists representing two non-negative integers. The most significan ...

  8. 445 Add Two Numbers II 两数相加 II

    给定两个非空链表来代表两个非负整数.数字最高位位于链表开始位置.它们的每个节点只存储单个数字.将这两数相加会返回一个新的链表.你可以假设除了数字 0 之外,这两个数字都不会以零开头.进阶:如果输入链表 ...

  9. LeetCode 445. Add Two Numbers II (两数相加 II)

    题目标签:Linked List 题目给了我们两个 数字的linked list,让我们把它们相加,返回一个新的linked list. 因为题目要求不能 reverse,可以把 两个list 的数字 ...

随机推荐

  1. [python]标准库json格式化工具

    这段时间做的事情比较杂乱,一部分时间在做运维,一部分时间在做开发,总是太着急,总是感觉很多东西做的不是很满意.还是要静下心来好好想一想,多花些时间来改进,重构和思考. 软件开发绝不紧紧是写代码,完成功 ...

  2. UE4实现描边效果

    描边效果属于常见常用的功能,现VR项目中,也需要射线选中一个物体,使物体高亮. 于是在网上找了部分资料,同时也感谢群里的一位大神的提点,总算将描边的功能实现了,这里也写一个简单的示例步骤. 1.我并不 ...

  3. 程序员大牛 Jeff Atwood 的两本中文书

    程序员大牛,StackOverflow.com创始人之一--Jeff Atwood 英文博客:http://blog.codinghorror.com <高效能程序员的修炼>,人民邮电出版 ...

  4. Unity UGUI之Canvas&EventSystem

    最近想写一套关于UGUI所有控件的基础使用教程系列,主要是根据本人的使用心得来写的,所以其中可能难以避免会有不正确的地方. 好了进入主题,既然是第一篇,我觉得我有必要先介绍一下UGUI必不可缺的两个组 ...

  5. 最简单的基于FFmpeg的AVfilter例子(水印叠加)

    ===================================================== 最简单的基于FFmpeg的AVfilter例子系列文章: 最简单的基于FFmpeg的AVfi ...

  6. Chipmunk僵尸物理对象的出现和解决(五)

    ,因为将反弹棒变长和缩短的代码是类似的所以我们只看一个即可,就让我们详细看看缩短的方法吧. +(void)doStickShorterWork:(Stick *)stick{ GameScene *g ...

  7. 看uboot的时候发现随机数的另外一种算法

    #include <stdio.h> #include <time.h> static unsigned int y = 1U; unsigned int rand_r(uns ...

  8. Leetcode_165_Compare Version Numbers

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42342251 Compare two version nu ...

  9. Leetcode_110_Balanced Binary Tree

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42218839 Given a binary tree, d ...

  10. Android APP新的“优雅”退出方式--EventBus大显身手

    最近在研究eventBus..很多小伙伴不知道他有什么用.. 前篇介绍了EventBus的基本使用 这里简单举一个例子,就是退出APP 转载请注明出处:http://blog.csdn.net/win ...