[Lintcode] #167 链表求和

来源:互联网 发布:unity3d和3dmax区别 编辑:程序博客网 时间:2024/06/05 18:52

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


样例

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

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { *         val = x; *         next = null;       *     } * } */public class Solution {    /*     * @param l1: the first list     * @param l2: the second list     * @return: the sum list of l1 and l2      */    public ListNode addLists(ListNode l1, ListNode l2) {        // write your code here        ListNode newHead = new ListNode(-1);ListNode pre = newHead;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;}if (sum > 9) {carry = 1;sum -= 10;} elsecarry = 0;ListNode cur = new ListNode(sum);pre.next = cur;pre = cur;}if (carry == 1)pre.next = new ListNode(1);return newHead.next;    }}


原创粉丝点击