题目描述:
给定两个 非空链表 l1和 l2 来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。可以假设除了数字 0 之外,这两个数字都不会以零开头。
示例1:输入:l1 = [7,2,4,3], l2 = [5,6,4] 输出:[7,8,0,7]
示例2:输入:l1 = [2,4,3], l2 = [5,6,4] 输出:[8,0,7]
示例3:输入:l1 = [0], l2 = [0] 输出:[0]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/lMSNwu
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
方法一:花费2小时,我的老天爷!
step 1. 链表是单向链表,只能从前向后遍历。为了让两个链表的相应位数对上,想到补零,给短的链表的前面补零,让两个链表长度相等。
step 2. 长度相等之后将两个链表相加,由于相加后的数据可能大于9,所以用一个vector存储了相加后的数据。
step 3. 得到相加后的数据, 再处理进位的情况,最终把处理后的数据依次放入链表中。这个链表复用了l1和l2中较长的那个,注意首位的处理。