2. 两数相加

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> 2. 两数相加

本题来自 LeetCode:2. 两数相加[1]

题目描述

给出两个   非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照   逆序   的方式存储的,并且它们的每个节点只能存储   一位   数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0  开头。
示例:


输入:(2 - 4 - 3) + (5 - 6 - 4)
输出:7 - 0 - 8
原因:342 + 465 = 807

题目分析

本题比较简单,迭代两个链表,迭代次数为 max(m, n) + 1,其中 m n分别为 l1 l2的长度;

题目解答


/**
 * 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) {
        ListNode dummy = new ListNode(-1);
        ListNode cur = dummy;
        int carry = 0;
        while(carry != 0 || l1 != null || l2 != null) {
            int digit1 = 0;
            if(l1 != null) {
                digit1 = l1.val;
                l1 = l1.next;
            }
            int digit2 = 0;
            if(l2 != null) {
                digit2 = l2.val;
                l2 = l2.next;
            }
            carry += digit2 + digit1;
            cur.next = new ListNode(carry % 10);
            cur = cur.next;
            carry /= 10;
        }
        return dummy.next;
    }
}

复杂度分析:
时间复杂度: O(max(m, n))
空间复杂度: O(max(m, n))

参考资料

  1. 两数相加: https://leetcode-cn.com/problems/add-two-numbers

原文始发于微信公众号(xiaogan的技术博客):

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> 2. 两数相加


  转载请注明: 好好学java 2. 两数相加

 上一篇
66. 加一&67. 二进制求和 66. 加一&67. 二进制求和
66. 加一本题来自 LeetCode:66. 加一[1] 题目描述给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零
2021-04-05
下一篇 
445. 两数相加 II 445. 两数相加 II
本题来自 LeetCode:445. 两数相加 II[1] 题目描述给定两个非空链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储单个数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会
2021-04-05