知识点:链表

因为链表存储的是倒序的数字,就比较好理解一些,我们只需要将节点依次相加,并考虑进位问题。具体来说,将两个链表节点的值和进位值相加,存储到新节点中,若超过十,则继续进位,表现在代码中就是在递归调用函数时,修改add参数,以传递进位关系。

Java题解如下

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param l1 ListNode类 
     * @param l2 ListNode类 
     * @return ListNode类
     */
    public ListNode addEnergyValues (ListNode l1, ListNode l2) {
        // write code here
        return getValue(l1, l2, 0);
    }

    private ListNode getValue(ListNode l1, ListNode l2, int add) {
        add += l1 == null? 0: l1.val;
        add += l2 == null? 0: l2.val;
        if(l1 == null && l2 == null && add == 0) {
            return null;
        }
        ListNode node = new ListNode(add % 10);
        add /= 10;
        ListNode next1 = l1 == null? null: l1.next;
        ListNode next2 = l2 == null? null: l2.next;
        node.next = getValue(next1, next2, add);
        return node;
    }
}