当前位置: 首页 > news >正文

力扣刷题Day 30:两数相加(2)

1.题目描述

2.思路

方法1:首先必须要遍历两个链表,分别得到num1和num2,将两数相加,然后将结果num3逆序切割成字符形式分配给伪头后的每个结点。

方法2:l1和l2中相同位置的数字可以直接相加赋给对应位置的l3,也采用伪头的方法。

3.代码(Python3)

方法1:

class Solution:def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:l3 = ListNode()node1, node2, node3 = l1, l2, l3num1, num2 = '', ''while node1:num1 = str(node1.val) + num1node1 = node1.nextwhile node2:num2 = str(node2.val) + num2node2 = node2.nextnum1, num2 = int(num1), int(num2)num3 = list(str(num1 + num2))[::-1]for val in num3:node3.next = ListNode(int(val))node3 = node3.nextreturn l3.next

方法2:

class Solution:def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:l3 = ListNode()node1, node2, node3 = l1, l2, l3carry = 0while node1 or node2 or carry:val1 = node1.val if node1 else 0val2 = node2.val if node2 else 0sum = val1 + val2 + carryif sum >= 10:carry = 1node3.next = ListNode(sum % 10)else:carry = 0node3.next = ListNode(sum)if node1:node1 = node1.nextif node2:node2 = node2.nextnode3 = node3.nextreturn l3.next

4.执行情况

方法1:

方法二:

5.感想

方法1牺牲空间换取时间,方法2牺牲时间换取空间。

http://www.xdnf.cn/news/162757.html

相关文章:

  • Simulink 数据存储机制:Base Workspace、Model Workspace 与 Data Dictionary 的核心区别
  • 2025.04.26-饿了么春招笔试题-第二题
  • Datawhale AI春训营 AI4S蛋白质赛道学习笔记
  • 第二大脑-个人知识库
  • 深入解析 C++17 中的std::variant与std::visit:从原理到实践
  • 来自 Bisheng 关于微调的内容总结
  • C盘爆红如何解决
  • 数据存储与安全保障双重buff叠满!极空间NAS『病毒查杀』功能上线,如何妙用?
  • Spring Cloud面试考点
  • Neo4j 常用查询语句
  • Deep Reinforcement learning for real autonomous mobile robot navigation
  • 【记一次亚马逊普华永道审计流程】
  • Go context 包的底层实现原理
  • 嵌入式C语言基础入门
  • 栈和堆内存可视化演示页面
  • Python编程中的基本语句
  • Webpack模块打包工具
  • Java基础第五章、面向对象程序设计
  • FastAPI 零基础入门指南:10 分钟搭建高性能 API
  • Linux 系统渗透提权
  • Bento4的安装和简单转码
  • 使用Java 操作 Nginx 配置文件
  • 一致性哈希详解:优雅地扩展分布式系统
  • 反爬加密字体替换机制解析
  • HBase协处理器深度解析:原理、实现与最佳实践
  • 【Qt】信号与槽:构建灵活交互的核心机制
  • JAVAEE初阶01
  • 数据安全和合规性市场分析
  • MES系列-MOM(Manufacturing Operations Management,制造运营管理)
  • Redis为什么不直接使用C语言中的字符串?