LeetCoder(2)

You are given two non-empty linked lists representing two non-negative integers. 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.

You may assume the two numbers do not contain any leading zero, except the number 0 itself.


/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        int carry=0;
         ListNode listNode=new ListNode(0);
         ListNode p1=l1,p2=l2,p3=listNode;
         while(p1!=null||p2!=null){
             if(p1!=null){//设计程序时要严谨的考虑到null值的影响
                 carry+=p1.val;
                 p1=p1.next;
             }
             if(p2!=null){
                 carry+=p2.val;
                 p2=p2.next;
             }
             //核心程序段
             p3.next=new ListNode(carry%10); //取余是取出这个数
             p3=p3.next;
             carry/=10; //是否有进位
         }
         if(carry==1) //有进位
             p3.next=new ListNode(1);
         return listNode.next;  
    }
    
}

note:

1.The key point of this question, one is to understand the structure of ListNode has been given.

2. another is return listNode.next rather than return p3.next int the end of the code.

猜你喜欢

转载自blog.csdn.net/weixin_40896352/article/details/81006267
2
>&2
α2
2-2