题目链接:
链接
题目描述:
思路:
关键是进位
可能有两种情况:
- a+b>9
- a+b+进位>9
所以,需要一个变量表示进位的数字,两数之和应该是 sum=a+b+进位
每一位的数字是:sum%10
每一位的进位是:sum/10
这里需要新建节点,所以我们可以在新建节点的时候把val设置好
这样,第一个节点就不是真正的头节点,下一个才是
实现代码:
class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {ListNode head = new ListNode();ListNode cur = head;int carry = 0;while(l1 != null || l2 != null){int num1 = l1 != null ? l1.val : 0;int num2 = l2 != null ? l2.val : 0;int s = num1 + num2 + carry;carry = s/10;s = s%10;cur.next = new ListNode(s);cur = cur.next;l1 = l1 == null ? l1 : l1.next;l2 = l2 == null ? l2 : l2.next;}if(carry != 0){cur.next = new ListNode(carry);}return head.next;}
}