【题目描述】

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。

如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。

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

示例:

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

解答

  • 解法:遍历链表

将两个链表看作相同长度,长度短的链表补0再相加,比如:123 + 23 = 123 + 023 = 146

    初始化一个哑节点

    对于这个哑节点可以这么理解:

    · 我用的解法是将相加结果放到一个新的链表中,所以我初始化了一个新链表的头节点dummy

    · 但是我们需要不断往新链表后面加节点,如果每加一个新的值,就让dummy = dummy.next,那么我们最后虽然完成了加法,却没办法将新链表返回,因为这时候找不到头节点,之前初始化的dummy节点,已经跑到了新链表的尾部

    · 所以我们利用哑节点,再在哑节点后加一个用于接受sum的值的当前节点curr,完成加法后,只要返回dummy.next便可

    · while循环刚开始那两个if-else判断的意思:如果 l1 = None(因为若上一个循环中 l1 是链表的尾部节点,而在循环的最后令 l1 = l1.next ,所以下一次循环时,l1 为None),那么None节点是不能拥有 self.val 的,所以若当前节点为None,令x = 0即可完成补0操作,这也是为什么要设置x、y来接收 l1.val 和 l2.val 的原因

# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None class Solution:
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
dummy = ListNode(0) #哑节点,防止头节点丢失
curr = dummy #当前节点
carry = 0 #进位值 while l1 != None or l2 != None:
# x存储 l1.val的值
# y存储 l2.val的值 if l1 == None:
x = 0
else:
x = l1.val
if l2 == None:
y = 0
else:
y = l2.val
sum = x + y + carry
carry = sum // 10
sum = sum % 10 #真正加上的值
curr.next = ListNode(sum)
curr = curr.next
if l1 != None:
l1 = l1.next
if l2 != None:
l2 = l2.next if carry == 1:
curr.next = ListNode(1)
return dummy.next
  执行用时 :76 ms, 在所有 python3 提交中击败了83.44%的用户
  内存消耗 :12.8 MB, 在所有 python3 提交中击败了99.56%的用户

【leetcode算法-中等】2. 两数相加的更多相关文章

  1. 【LeetCode题解】2_两数相加

    目录 [LeetCode题解]2_两数相加 描述 方法一:小学数学 思路 Java 代码(非递归写法) Java 代码(递归写法) Python 代码(非递归写法) [LeetCode题解]2_两数相 ...

  2. Leetcode(2)两数相加

    Leetcode(2)两数相加 [题目表述]: 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两 ...

  3. 【leetcode】 算法题2 两数相加

      问题      给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 示例 ...

  4. Leetcode(二)两数相加

    两数相加 题目描述 给出两个非空的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链 ...

  5. leetcode刷题2:两数相加add_two_numbers

    题目:两数相加 (难度:中等) 给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字. 将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以 ...

  6. LeetCode题解002:两数相加

    两数相加 题目 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字 如果,我们将这两个数相加起来,则会返回一个新的链表 ...

  7. LeetCode 0、《两数相加》

    一.给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 示例: 输入:(2 ...

  8. Leetcode(2)-两数相加(包含链表操作的注意事项)

    给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 示例: 输入:(2 -& ...

  9. leetCode算法——1TwoSum(两数之和)

    描述: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中 ...

  10. 【LeetCode每日一题 Day 2】2. 两数相加

    大家好,我是编程熊,今天是LeetCode每日一题的第二天,一起学习的是LeetCode第二题<两数相加>. 题意 给你两个 非空 的链表,表示两个非负的整数.它们每位数字都是按照 逆序 ...

随机推荐

  1. Codeforces Round #583

    目录 Contest Info Solutions A. Optimal Currency Exchange B. Badges C. Bad Sequence D. Treasure Island ...

  2. Cogs 1714. [POJ1741][男人八题]树上的点对(点分治)

    [POJ1741][男人八题]树上的点对 ★★★ 输入文件:poj1741_tree.in 输出文件:poj1741_tree.out 简单对比 时间限制:1 s 内存限制:256 MB [题目描述] ...

  3. 爬虫与seo优化

    爬虫及爬行方式 爬虫有很多名字,比如web机器人.spider等,它是一种可以在无需人类干预的情况下自动进行一系列web事务处理的软件程序.web爬虫是一种机器人,它们会递归地对各种信息性的web站点 ...

  4. Shadows 使用说明

    1:下载最新版 Windows地址:点击下载 Mac地址:点击下载 2:Windows安装插件(点击下方插件名即可下载) .NET Framework 4.7.2和 Microsoft Visual ...

  5. 微信小程序的分享功能-css文字超过两行隐藏

    .info{ width:100px; word-break:break-all; display:-webkit-box; -webkit-box-orient:vertical; -webkit- ...

  6. 解决Ubuntu重启后,core_pattern失效问题——手动关闭apport

    云主机重启后,core_pattern,即/proc/sys/kernel/core_pattern和/etc/sysctl*配置失效,被系统自动修改. 配置后,重启后core_pattern被重写 ...

  7. 小程序 之wx.request和wx.showModal简单封装

    一.request封装 request(url, data, successCallBack = function(data) {}, completeCallBack = function(data ...

  8. weui-wxss框架实现博远企信小程序

  9. 实现Callable接口实现多线程

    package com.roocon.thread.t2; import java.util.concurrent.Callable; import java.util.concurrent.Exec ...

  10. 配置mysql远程访问

    参考: https://www.cnblogs.com/sanduzxcvbnm/p/9789236.html