[LeetCode Hot 100] LeetCode2. 两数相加

发布时间 2023-12-07 19:46:10作者: Ac_c0mpany丶

题目描述

思路:模拟

每次3个数相加:l1链表的值 + l2链表的值 + 进位
如果 l1链表不为空 或者 l2链表不为空 或者 进位不为0 我们就执行循环
那么和存储的是 t % 10
进位就是t / 10
因为题目需要创造一条链表,所以我们创建一个dummy结点的话会方便一点。

方法一:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        // 记录进位
        int t = 0;
        ListNode p = l1, q = l2;
        // 因为要创造新的链表,所以新建dummy结点
        ListNode dummy = new ListNode();
        ListNode cur = dummy;

        while (p != null || q != null || t != 0) {
            if (p != null) {
                t += p.val;
                p = p.next;
            } 
            if (q != null) {
                t += q.val;
                q = q.next;
            }
            cur.next = new ListNode(t % 10);
            cur = cur.next;
            t /= 10;
        }

        return dummy.next;     
   }
}