LeetCode----Add Two Numbers

本文介绍了一个通过Python实现的算法,用于将两个链表表示的非负整数相加,并返回结果作为新的链表。详细解释了算法逻辑,包括链表节点的初始化、遍历、加法运算和进位处理。
部署运行你感兴趣的模型镜像

Add Two Numbers

You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8


分析:

给定两个链表,按位相加。


代码:

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution(object):
    def addTwoNumbers(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
        p1 = l1
        p2 = l2
        end = None
        pn = 0
        n = 0
        nm = 0
        isFirst = True
        while p1 or p2:
            if p1 and p2:
                n = p1.val + p2.val + pn
                nm = n % 10
                pn = n / 10
                p1.val = nm
                end = p1
                p1 = p1.next
                p2 = p2.next
            elif p1:
                n = p1.val + pn
                nm = n % 10
                pn = n / 10
                p1.val = nm
                end = p1
                p1 = p1.next
            else:
                n = p2.val + pn
                nm = n % 10
                pn = n / 10
                p2.val = nm
                if isFirst:
                    end.next = p2
                    isFirst = False
                end = p2
                p2 = p2.next
        if pn:
            end.next = ListNode(pn)
        return l1


您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值