【每日一题Day253】LC2两数相加 | 链表模拟

简介: 【每日一题Day253】LC2两数相加 | 链表模拟

两数相加【LC2】

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。

请你将两个数相加,并以相同形式返回一个表示和的链表。

你可以假设除了数字 0 之外,这两个数都不会以 0 开头。


真的在走怀旧风呀

最后一天休息 都忘记周赛了 明明睡觉前还想着

  • 思路
    模拟两数相加,使用变量记录进位,直至两个节点都为空或者进位为0时停止相加
  • 实现
/**
 * 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) {
        ListNode dummy = new ListNode(-1);
        ListNode cur = dummy;
        int cnt = 0;
        while (l1 != null || l2 != null || cnt != 0){
            int a = 0, b = 0;
            if (l1 != null){
                a = l1.val;
                l1 = l1.next;
            }
            if (l2 != null){
                b = l2.val;
                l2 = l2.next;
            }
            int c = (a + b + cnt) % 10;
            cnt = (a + b + cnt) / 10;
            cur.next = new ListNode(c);
            cur = cur.next;
        }
        return dummy.next;
    }
}

image.png


目录
相关文章
|
2天前
|
存储
【每日一题Day254】LC445两数相加Ⅱ | 链表反转 栈
【每日一题Day254】LC445两数相加Ⅱ | 链表反转 栈
29 0
|
2天前
【每日一题Day268】LC415字符串相加 | 模拟
【每日一题Day268】LC415字符串相加 | 模拟
29 0
|
2天前
【每日一题Day290】LC1281整数的各位积和之差 | 模拟
【每日一题Day290】LC1281整数的各位积和之差 | 模拟
17 0
|
2天前
【每日一题Day221】LC2455可被三整除的偶数的平均值 | 模拟
【每日一题Day221】LC2455可被三整除的偶数的平均值 | 模拟
27 0
|
2天前
|
存储 算法 Java
LeetCode算法题---两数相加(二)
LeetCode算法题---两数相加(二)
26 0
|
2天前
【每日一题Day368】LC421数组中两个数的最大异或值 | 字典树
【每日一题Day368】LC421数组中两个数的最大异或值 | 字典树
18 0
|
2天前
【每日一题Day299】LC2235两整数相加
【每日一题Day299】LC2235两整数相加
19 0
|
2天前
【每日一题Day204】LC1330翻转子数组得到最大的数组值 | 数学
【每日一题Day204】LC1330翻转子数组得到最大的数组值 | 数学
24 1
|
7月前
|
算法 C++
剑指offer(C++)-JZ56:数组中只出现一次的两个数字(算法-位运算)
剑指offer(C++)-JZ56:数组中只出现一次的两个数字(算法-位运算)
剑指offer(C++)-JZ56:数组中只出现一次的两个数字(算法-位运算)
|
7月前
|
算法 测试技术 C++
剑指offer(C++)-JZ20:表示数值的字符串(算法-模拟)
剑指offer(C++)-JZ20:表示数值的字符串(算法-模拟)