练习:两数相加(链表逆序存储求和数字)

本文探讨了如何使用Python中的堆栈原理解决两数相加的逆序问题,通过链表操作演示了如何将和的数字逆序存储。作者分享了两种方法,并强调了代码可读性的提升。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



两数相加


   优快云“每日一练”(Python)题目

  1. 题目
  2. 我的想法
  3. 代码运行效果
  4. 完整代码

练习题目

在这里插入图片描述


回首页

我的想法


  看到题目是逆序,我想用堆栈原理来解题:

  逆序存储在链表的数字,可以看作是从个位数字依次入了栈,只需出栈还原即可求和(用list.pop()定义一个出栈函数,对数字进行还原)。
  求和后要对数字进行入栈操作,才可以输出题目要求的逆序存储的链表。把和数字转成字符串,处理相对轻松些。😃有两个方式:
①可以倒序读取和数字的字符,依次list.append()追加到输出列表,个位数字就排到前头,实现题目要求。
for i in range(len(sum_s)-1, -1, -1): #入栈
    (sum_list.append(int(sum_s[i])) #倒序添加和数字字符串。
②正序读取和数字的字符,从链表头依次list.insert(0, s)插入和的数字,高位就被“挤”到了右边,实现了逆序链表输出两数和。
for i in sum_s: #入栈。这两行代码与前面被注释掉的两行代码同效,但代码更易理解。
    sum_list.insert(0, int(i)) #在列表头插入。
  相较之下,后者代码更清晰明了,可读性更强一些

回首页

代码运行效果

在这里插入图片描述


回首页

python完整代码
(如果从语句注释不能清楚作用,请评论区留言指教和探讨。🤝)
# coding: utf-8


'''两数相加'''
input_list = ([2, 4, 3], [5, 6, 4]), ([0], [0]), ([9, 9, 9, 9, 9, 9, 9], [9, 9, 9, 9])


def out_stacks(lis): #出栈函数:把数字列表还原成数字。
    lis2 = []
    for i in lis[:]:
        lis2.append(str(lis.pop()))
    return int(''.join(lis2))


def sum_out(lis, lis2): #计算并输出两数和入栈列表。
    sum_s = str(out_stacks(lis) + out_stacks(lis2))
    sum_list = []
    #for i in range(len(sum_s)-1, -1, -1): #入栈
        #sum_list.append(int(sum_s[i])) #倒序添加和数字字符串。
    for i in sum_s: #入栈。这两行代码与前面被注释掉的两行代码同效,但代码更易理解。
        sum_list.insert(0, int(i)) #在列表头插入。
    return sum_list


for x, y in input_list: #依次输出三组列表结果。
    input(f'\n\n输入:\nlist1:{x},list2:{y}\n{"":.^42}\n\n输出:{sum_out(x, y)}\n\n{"The End":.^42}\n')

回首页

我的博文推荐:

推荐条件 点阅破千

参考文章:


上一篇:输出字符串的前10个不同字符
下一篇:练习:旋转链表(list.insert(0, list.pop())实现)


回首页

老齐漫画头像

精品文章:

来源:老齐教室


优快云实用技巧博文:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦幻精灵_cq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值