首页 > 其他分享 >两数相加

两数相加

时间:2023-04-06 14:36:04浏览次数:27  
标签:p2 p1 val 相加 next tail l1

题目介绍

难度中等

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

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

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

示例 1:

img

输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.

示例 2:

输入:l1 = [0], l2 = [0]
输出:[0]

示例 3:

输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
输出:[8,9,9,9,0,0,0,1]

提示:

  • 每个链表中的节点数在范围 [1, 100]
  • 0 <= Node.val <= 9
  • 题目数据保证列表表示的数字不含前导零

解答

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
        p1 = l1
        p2 = l2
        tail = l1
        c = 0
        while p1 is not None and p2 is not None:
            val = p1.val + p2.val + c
            if val > 9:
                p1.val = val % 10
                c = 1
            else:
                p1.val = val
                c = 0
            tail = p1
            p1 = p1.next
            p2 = p2.next
        
        while p1 is not None:
            val = p1.val + c
            if val > 9:
                p1.val = val % 10
                c = 1
            else:
                p1.val = val
                c = 0
            tail = p1
            p1 = p1.next
        
        while p2 is not None:
            val = p2.val + c
            tail.next = ListNode()
            tail = tail.next
            p1 = tail
            if val > 9:
                p1.val = val % 10
                c = 1
            else:
                p1.val = val
                c = 0
            p2 = p2.next

        if c == 1:
            tail.next = ListNode()
            tail = tail.next
            p1 = tail
            p1.val = 1
        return l1

标签:p2,p1,val,相加,next,tail,l1
From: https://www.cnblogs.com/crazypigf/p/17292649.html

相关文章

  • 四数相加|哈希表
    四数相加给定四个数组,如果四个数相加,如果和为0那么计数加一,最后输出一共有几个组合使得和为0。这题应用哈希表解决对应题目454.四数相加II哈希表使用哈希表,保存前两个数组对应的组合之和。value为两数相之和,如果有相同那么value加一。之和再遍历剩下两个数组之和的组合,再......
  • 0204 字符串相加
    字符串的+操作​ 当+操作中出现字符串时,这个+就是字符串连接符,而不是算术运算符了,会将前后的数据进行拼接,并产生新的字符串。连续加时​ 连续进行+操作时,从左到右逐个执行,只要在前面出现过字符串的+操作,后面即使出现数字相加也会视为字符串相加System.out.println("abc"+tru......
  • 两个链表相加,翻转链表
    将两个链表进行翻转,然后遍历链表进行相加翻转链表:reverseList(head){pre=null;//将遍历到的节点放在这个空节点的前面cur=head;while(cur!=null){temp =......
  • 【视频】广义相加模型(GAM)在电力负荷预测中的应用|附代码数据
    全文下载链接:http://tecdat.cn/?p=9024最近我们被客户要求撰写关于广义相加模型(GAM)的研究报告,包括一些图形和统计输出。这篇文章探讨了为什么使用广义相加模型 是一个不......
  • 两个地址相加
    两个地址相加的意义是将它们的值相加,得到一个新的地址。这个新地址可能会指向内存中的一个新位置,也可能会指向一个已经存在的位置。在某些情况下,将两个地址相加可以用于计......
  • 代码随想录Day7-Leetcode454. 四数相加 II,383. 赎金信 ,15. 三数之和 ,18. 四数之和
    454.四数相加II这个第一时间没想出来怎么做的;后面看了题解才发现可以两两分组;绝了/***@param{number[]}nums1*@param{number[]}nums2*@param{number[......
  • 2.两数相加
    给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表......
  • C05大整数相加
    importjava.math.BigInteger;importjava.util.Scanner;publicclassA05大整数相加{publicstaticvoidmain(String[]args){Scannerinput=newScanner(System......
  • [数据结构]一元多项式的表示与相加
    /**@Author:*@Date:2019-12-0320:48:51*@LastModifiedby:*@LastModifiedtime:2019-12-0321:05:06*/#include<iostream>#include<cstdio>usingnamespa......
  • LeetCode 2.两数相加
    题目链接在这里:​​2.两数相加-力扣(LeetCode)​​这道题学了一些python类和子函数的语法,发现语法与C++有异曲同工之妙1classListNode:2def__init__(self,val=0,......