lintcode(221)链表求和 II

来源:互联网 发布:移动平均算法 编辑:程序博客网 时间:2024/06/05 15:57

Description:

假定用一个链表表示两个数,其中每个节点仅包含一个数字。假设这两个数的数字顺序排列,请设计一种方法将两个数相加,并将其结果表现为链表的形式。

Explanation:

给出 6->1->7 +2->9->5。即,617 + 295

返回 9->1->2。即,912

Solution:

利用栈的先进后出,记录两个链表的节点值。然后计算对应位置的两个数字之和,如果有进位,赋值给flag并带入下一个计算。

/** * 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 addLists2(ListNode l1, ListNode l2) {        // write your code here        Stack<Integer> temp1 = reverseNode(l1);        Stack<Integer> temp2 = reverseNode(l2);        ListNode point = new ListNode(0);        int flag = 0;        while((!temp1.isEmpty()) && (!temp2.isEmpty())){            int value = temp1.pop() + temp2.pop() + flag;            flag = value/10;            value = value%10;            ListNode cur = new ListNode(value);            cur.next = point.next;            point.next = cur;        }        while(!temp1.isEmpty()){            int value = temp1.pop() + flag;            flag = value/10;            value = value%10;            ListNode cur = new ListNode(value);            cur.next = point.next;            point.next = cur;        }        while(!temp2.isEmpty()){            int value = temp2.pop() + flag;            flag = value/10;            value = value%10;            ListNode cur = new ListNode(value);            cur.next = point.next;            point.next = cur;        }        if(flag == 1){            ListNode cur = new ListNode(1);            cur.next = point.next;            point.next = cur;        }        return point.next;    }        public Stack<Integer> reverseNode(ListNode temp){        Stack<Integer> record = new Stack<Integer>();        while(temp != null){            record.push(temp.val);            temp = temp.next;        }        return record;    }}


原创粉丝点击