Python链表入门 ——两数相加

举报
是Dream呀 发表于 2022/07/30 22:01:59 2022/07/30
【摘要】 Python链表入门 ——两数相加

@TOC
在这里插入图片描述

💦乐园描述

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

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

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

示例 1:


输入: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
题目数据保证列表表示的数字不含前导零

💦游园准备

🍉What is 链表:

🍇Python是动态语言,可以直接把对象赋值给新的变量。C/C++中,通常采用“指针+结构体”来实现链表;而在Python中,则可以采用“引用+类”来实现链表。
🍇链表的定义:是一组数据项的集合,其中每个数据项都是一个节点的一部分,每个节点还包含指向下一个节点的链接
链表的结构:data为自定义的数据,next为下一个节点的地址。

🍉链表的基本元素:

  1. 节点:每个节点有两个部分,左边称为值域,存放用户数据;右边部分为指针域,用来存放指向下一个元素的指针。
  2. head:head节点永远指向第一个节点
  3. tail: tail永远指向最后一个节点
  4. None:链表中最后一个节点的指针域为None值

🍉 链表种类:

🍇链表分为:单向链表、单向循环链表、双向链表、双向循环链表

节点类定义:
🍌我们将节点类定义成Node,该类在初始化实例对象时,定义了两个实例变量,其中data用来存储节点的值,next用来存储下一个节点的索引:

class Node:
    def __init__(self,data = None, next = None):
        self.data = data
        self.next = next

创建节点:

node1 = Node(1)
node2 = Node(2)
node3 = Node(3)

联系起来:

node1.next = node2
node2.next = node3

💦开始游玩

# 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: ListNode, l2: ListNode) -> ListNode:
        resHead = resNode = ListNode()
        tens = units = num = 0
        while tens or l1 or l2 :
            num = ( l1.val if l1 else 0 ) + ( l2.val if l2 else 0 ) + tens  
            tens , units = num // 10 , num % 10 
            resNode.next = ListNode(units)
            resNode , l1 , l2 = resNode.next , l1.next if l1 else None , l2.next if l2 else None 
        return resHead.next


在这里插入图片描述

🍉大胆假设:

如果题目说的不是链表呢?只是普通的列表,我们应该怎么办:
在这里插入图片描述
暴力一点吧,你忍一下:

L=[3,4,5]
list2=''
for i in L[::-1]:
    list2 = list2 + str(i)
    a=int(list2)
l1=[5,6,9,4]
list1=''
for j in l1[::-1]:
    list1 = list1 + str(j)
    b=int(list1)
c=str(a+b)
list3=[]
for ii in c[::-1]:
    list3.append(int(ii))
print(list3)

💦游玩总结

The stage extends as far as the heart goes~加油!❤️❤️❤️

🌲🌲🌲 好啦,这就是今天要给大家分享的全部内容了
❤️❤️❤️如果你喜欢的话,就不要吝惜你的一键三连了~在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。