LeetCode题解(0002):两链表逐项相加(Python)
发布日期:2021-06-29 19:51:34
浏览次数:2
分类:技术文章
本文共 1200 字,大约阅读时间需要 4 分钟。
LeetCode题解:0002(两数相加)
(中等)
解法 | 时间复杂度 | 空间复杂度 | 执行用时 |
---|---|---|---|
Ans 1 (Python) | O ( m a x ( m , n ) ) O(max(m,n)) O(max(m,n)) | O ( m a x ( m , n ) ) O(max(m,n)) O(max(m,n)) | 76ms (>60.58%) |
Ans 2 (Python) | O ( m a x ( m , n ) ) O(max(m,n)) O(max(m,n)) | O ( m a x ( m , n ) ) O(max(m,n)) O(max(m,n)) | 68ms (>88.91%) |
解法一(按位依次相加):
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode: ans = ListNode(0) # 返回结果 carry = 0 # 进位计数 node = ans # 当前位 while True: value = carry if l1: value += l1.val l1 = l1.next if l2: value += l2.val l2 = l2.next node.val = value % 10 carry = value // 10 if l1 or l2 or carry == 1: node.next = ListNode(0) node = node.next else: break return ans
解法二(优化代码结构):
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode: ans = node = ListNode(None) # 返回结果 当前节点 now = 0 # 进位计数 while l1 or l2 or now: now += (l1.val if l1 else 0) + (l2.val if l2 else 0) node.next = ListNode(now % 10) node = node.next now //= 10 l1 = l1.next if l1 else None l2 = l2.next if l2 else None return ans.next
转载地址:https://dataartist.blog.csdn.net/article/details/106741859 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月25日 17时18分18秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
OLTP/OLAP/HTAP学习一
2019-04-30
easyui.form
2019-04-30
酒店管理系统
2019-04-30
数据结构与算法学习一
2019-04-30
分布式学习一
2019-04-30
微服务学习十
2019-04-30
nginx负载均衡/反向代理学习一
2019-04-30
大数据学习一
2019-04-30
在线教育系统
2019-04-30
七大管理工具
2019-04-30
InstallUtil
2019-04-30
BPM学习
2019-04-30
项目管理的47个流程
2019-04-30
一张图遍历中外历史事件、科学发明、哲学思想对照表
2019-04-30
C# 利用VS自带的WSDL工具生成WebService服务类
2019-04-30
Devops学习一
2019-04-30
电商数据化管理
2019-04-30
单点登录时序图
2019-04-30
产品经理工作流程
2019-04-30