本文共 1411 字,大约阅读时间需要 4 分钟。
那么,我们就来一步一步实现这个问题。我们需要定义一个链表来表示数字,并把两个逆序的链表相加,返回结果的逆序链表。
###思路
###代码实现
/* 节点的定义 */class ListNode {    int val;    ListNode next;    ListNode(int val) {        this.val = val;        this.next = null;    }}class Solution {    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {        // 创建虚拟的头节点        ListNode dummy = new ListNode(-1);        ListNode current = dummy;        int t = 0;        // 处理循环,直到所有节点和进位处理完毕        while (l1 != null || l2 != null || t != 0) {            // 初始化t为0,开始处理当前位数和进位            t = 0;            // 如果有两个节点,则都加上去            if (l1 != null) {                t += l1.val;                l1 = l1.next;            }            if (l2 != null) {                t += l2.val;                l2 = l2.next;            }            // 将当前位数添加到结果链表中            current.next = new ListNode(t % 10);            current = current.next;            // 更新进位            t /= 10;        }        return dummy.next;    }}  ###解释
dummy,作为结果链表的起始点。这个虚拟节点的下一个节点是我们的结果链表的起点。l1和l2当前节点的值加到t上。然后,继续处理进位。这种方法确保了我们正确地处理了所有可能的进位,包括最高位的进位,确保结果链表是正确的。
转载地址:http://pirkk.baihongyu.com/