给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-two-numbers
因为这里采用的是链表结构 而且是个位上的数字在表头所以比较好处理
思路:从前向后进行遍历两个链表 以长链表为准 为空的时候补0 另外就是一个进位的问题 每次相加的时候需要考虑进位问题 最后一个问题就是 如果最后一位相加后还是有进位
那么我们需要增加一个新的节点 添加在尾部
代码实现:
class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { int sum = 0; int carry = 0; ListNode newHead = new ListNode(-1); ListNode pre = newHead; while(l1!=null || l2!=null){ int x = l1==null?0:l1.val; int y = l2==null?0:l2.val; sum = x+y+carry; int temp = sum%10; carry = sum/10; pre.next = new ListNode(temp); if(l1!=null){ l1 = l1.next; } if(l2!=null){ l2 = l2.next; } pre = pre.next; } if(carry==1){ pre.next = new ListNode(1); } return newHead.next; } }