LeetCode题解(0002):两链表逐项相加(Python)
发布日期:2021-06-29 19:51:34 浏览次数:2 分类:技术文章

本文共 1200 字,大约阅读时间需要 4 分钟。

LeetCode题解:0002(两数相加)

(中等)

解法 时间复杂度 空间复杂度 执行用时
Ans 1 (Python) O ( m a x ( m , n ) ) O(max(m,n)) O(max(m,n)) O ( m a x ( m , n ) ) O(max(m,n)) O(max(m,n)) 76ms (>60.58%)
Ans 2 (Python) O ( m a x ( m , n ) ) O(max(m,n)) O(max(m,n)) O ( m a x ( m , n ) ) O(max(m,n)) O(max(m,n)) 68ms (>88.91%)

解法一(按位依次相加):

def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:    ans = ListNode(0)  # 返回结果    carry = 0  # 进位计数    node = ans  # 当前位    while True:        value = carry        if l1:            value += l1.val            l1 = l1.next        if l2:            value += l2.val            l2 = l2.next        node.val = value % 10        carry = value // 10        if l1 or l2 or carry == 1:            node.next = ListNode(0)            node = node.next        else:            break    return ans

解法二(优化代码结构):

def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:    ans = node = ListNode(None)  # 返回结果 当前节点    now = 0  # 进位计数    while l1 or l2 or now:        now += (l1.val if l1 else 0) + (l2.val if l2 else 0)        node.next = ListNode(now % 10)        node = node.next        now //= 10        l1 = l1.next if l1 else None        l2 = l2.next if l2 else None    return ans.next

转载地址:https://dataartist.blog.csdn.net/article/details/106741859 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:LeetCode题解(0003):字符串中无重复字符的最长子串(Python)
下一篇:LeetCode题解(0001):两数之和(Python)

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月25日 17时18分18秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章