Python链表入门 ——两数相加
【摘要】 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为下一个节点的地址。
🍉链表的基本元素:
节点
:每个节点有两个部分,左边称为值域,存放用户数据;右边部分为指针域,用来存放指向下一个元素的指针。head
:head节点永远指向第一个节点tail
: tail永远指向最后一个节点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)