Add Two Numbers [Medium]

来源:互联网 发布:手动编译java项目 编辑:程序博客网 时间:2024/06/08 10:57

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

========================================Answer====================================================

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { *         val = x; *         next = null; *     } * } */public class Solution {    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {        if(l1==null&&l2==null) return null;                if(l1==null) return l2;                if(l2==null) return l1;                ListNode temp1 = l1;        ListNode temp2 = l2;        int signiVal=0;        while(true) {                        int val = temp1.val+temp2.val+signiVal;                        if(val>=10) {                val=val -10;                signiVal=1;            }else{                signiVal=0;            }                       temp1.val = val;                      if(temp1.next==null&&temp2.next==null) {                              if(signiVal==0) {                   return l1;                                  }else{                temp1.next = new ListNode(1);                return l1;                                  }                         }           else if(temp2.next==null) {                                if(signiVal==0) {                   return l1;                                   }                else{                    while(temp1.next!=null) {                        temp1=temp1.next;                        if(temp1.val==9) temp1.val=0;                        else                         {                            temp1.val=temp1.val+1;                            return l1;                        }                }                                    temp1.next = new ListNode(1);                    return l1;                }           }else if(temp1.next==null) {                              temp1.next=temp2.next;               temp2.next=null;                              if(signiVal==0) {                   return l1;               }else{                    while(temp1.next!=null) {                        temp1=temp1.next;                        if(temp1.val==9) temp1.val=0;                        else                         {                            temp1.val=temp1.val+1;                            return l1;                        }                    }                    temp1.next = new ListNode(1);                    return l1;                                  }           }                      temp1=temp1.next;           temp2=temp2.next;                    }        }}


0 0
原创粉丝点击