博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(python版) Leetcode-2.两数相加
阅读量:4091 次
发布时间:2019-05-25

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

01 题目

链接:https://leetcode-cn.com/problems/add-two-numbers

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

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

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

示例

输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)

输出:7 -> 0 -> 8
.
原因:342 + 465 = 807

02 解析

在这里插入图片描述

首先,我们能想到的是依次取出链表的value值,相加,存放在一个新链表 l3

其次,两个是链表的长度可能不等。需要考虑 补零 操作,补几个?补到更长链表的长度
然后,若相加大于10,当前位的取值,进位的1如何放置
最后,验证最后一位相加是否需 进一。需要的话,就在链表最后添加一个1

03 代码

l3 是输出链表

carry 是进位数,两个(0-9的)数相加,范围在0 - 18,所以sum // 10 向下取整的地板除,只能为0/1

sum % 10是当前位若大于10的余数

# Definition for singly-linked list.# class ListNode(object):#     def __init__(self, x):#         self.val = x#         self.next = Noneclass Solution(object):    def addTwoNumbers(self, l1, l2):        """        :type l1: ListNode        :type l2: ListNode        :rtype: ListNode        """        head = ListNode(0)  # 头结点,无存储,指向链表第一个结点        l3 = head           # 初始化链表结点        carry = 0           # 初始化 进一 的数        while l1 or l2:            x = l1.val if l1 else 0        # 这两句if是补零操作            y = l2.val if l2 else 0            sum = x + y + carry            # 对每一位求和            carry = sum // 10              # 地板除(向下取整),求进一(其为0或1)            l3.next = ListNode(sum % 10)   # 取余数,求本位结点            if l1:                         # 求空否,防止出现无后继结点                l1 = l1.next                   if l2:                         # 同上                l2 = l2.next            l3 = l3.next                 # 更新指针        # l3存储完毕        if carry != 0:                   # 验证最后一位相加是否需 进一            l3.next = ListNode(1)        return head.next                 # 返回头结点的下一个结点,即链表的第一个结点

参考链接:https://leetcode-cn.com/problems/add-two-numbers/solution/76ms137mb-by-yue-xia-gua-tian-de-run-tu/

转载地址:http://iujii.baihongyu.com/

你可能感兴趣的文章
Spring处理表单提交
查看>>
Spring MVC异常处理
查看>>
Leetcode 1180. Count Substrings with Only One Distinct Letter [Python]
查看>>
PHP 7 的五大新特性
查看>>
php使用 memcache 来存储 session
查看>>
php实现socket(转)
查看>>
PHP底层的运行机制与原理
查看>>
php 几个比较实用的函数
查看>>
深入了解php底层机制
查看>>
PHP中的stdClass 【转】
查看>>
XHProf-php轻量级的性能分析工具
查看>>
PHP7新特性 What will be in PHP 7/PHPNG
查看>>
比较strtr, str_replace和preg_replace三个函数的效率
查看>>
ubuntu 下编译PHP5.5.7问题:configure: error: freetype.h not found.
查看>>
PHP编译configure时常见错误 debian centos
查看>>
configure: error: Please reinstall the BZip2 distribution
查看>>
OpenCV gpu模块样例注释:video_reader.cpp
查看>>
【增强学习在无人驾驶中的应用】
查看>>
《python+opencv实践》四、图像特征提取与描述——29理解图像特征
查看>>
《python+opencv实践》四、图像特征提取与描述——30Harris 角点检测
查看>>