Add Two Numbers

来源:互联网 发布:linux redmine 安装 编辑:程序博客网 时间:2024/06/15 18:39

Add Two Numbers

sysu 15331160 李仁杰


这道题难度中:
题目意思大概可以理解为倒叙的带进位十进制加法。
两个字串相加分为三种情况:
第一个比第二个长
第一个和第二个一样长
第一个比第二个短

其中设置一个carry 和sum,然后利用循环即可得解
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {    ListNode dummyHead = new ListNode(0);    ListNode p = l1, q = l2, curr = dummyHead;    int carry = 0;    while (p != null || q != null) {        int x = (p != null) ? p.val : 0;        int y = (q != null) ? q.val : 0;        int sum = carry + x + y;        carry = sum / 10;        curr.next = new ListNode(sum % 10);        curr = curr.next;        if (p != null) p = p.next;        if (q != null) q = q.next;    }    if (carry > 0) {        curr.next = new ListNode(carry);    }    return dummyHead.next;}