Add Two Numbers

来源:互联网 发布:创意文字设计软件 编辑:程序博客网 时间:2024/06/03 20:38

题目

You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8

方法

链表的遍历,只需要一遍即可。
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {        ListNode head=null;        ListNode last = null;        int flag = 0;        while(l1!=null&&l2!=null){            int temp;            temp = l1.val + l2.val + flag;            if (temp >= 10) {            temp = temp - 10;            flag = 1;            } else {            flag = 0;            }                        if(head == null){            head = new ListNode(temp);            last = head;            }else{                ListNode cur = new ListNode(temp);                last.next = cur;                last = cur;            }               l1 = l1.next;            l2 = l2.next;        }                while(l1 != null){            if(flag == 1){                int temp = l1.val + 1;                if(temp >= 10){                    flag = 1;                    temp = temp -10;                }else{                    flag = 0;                }                                if(head == null){                head = new ListNode(temp);                last = head;                }else{                    ListNode cur = new ListNode(temp);                    last.next = cur;                    last = cur;                }                 l1 = l1.next;            }else{            last.next = l1;                break;            }        }        while(l2 != null){            if(flag == 1){                int temp = l2.val + 1;                if(temp >= 10){                    flag = 1;                    temp = temp -10;                }else{                    flag = 0;                }                                if(head == null){                head = new ListNode(temp);                last = head;                }else{                    ListNode cur = new ListNode(temp);                    last.next = cur;                    last = cur;                }                 l2 = l2.next;                            }else{            last.next = l2;                break;            }        }        if(flag == 1){            ListNode lnTemp = new ListNode(1);            last.next = lnTemp;        }        return head;    }


0 0
原创粉丝点击