剑指 Offer II 025. 链表中的两数相加


comments: true
edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20025.%20%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E4%B8%A4%E6%95%B0%E7%9B%B8%E5%8A%A0/README.md

剑指 Offer II 025. 链表中的两数相加

题目描述

给定两个 非空链表 l1l2 来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。

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

 

示例1:

输入:l1 = [7,2,4,3], l2 = [5,6,4]
输出:[7,8,0,7]

示例2:

输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[8,0,7]

示例3:

输入:l1 = [0], l2 = [0]
输出:[0]

 

提示:

  • 链表的长度范围为 [1, 100]
  • 0 <= node.val <= 9
  • 输入数据保证链表代表的数字无前导 0

 

进阶:如果输入链表不能修改该如何处理?换句话说,不能对列表中的节点进行翻转。

 

注意:本题与主站 445 题相同:https://leetcode.cn/problems/add-two-numbers-ii/

解法

方法一

Python3
# 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:s1,s2=[],[]while l1:s1.append(l1.val)l1=l1.nextwhile l2:s2.append(l2.val)l2=l2.nextcarry,nxt=0,Nonewhile s1 or s2 or carry:sm=(s1.pop() if s1 else 0) + (s2.pop() if s2 else 0)+carrycur=ListNode(sm%10,nxt)nxt=curcarry=sm//10return nxt
Java
/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {Deque<Integer> s1 = new ArrayDeque<>();Deque<Integer> s2 = new ArrayDeque<>();for (; l1 != null; l1 = l1.next) {s1.push(l1.val);}for (; l2 != null; l2 = l2.next) {s2.push(l2.val);}int carry = 0;ListNode dummy = new ListNode();while (!s1.isEmpty() || !s2.isEmpty() || carry != 0) {carry += (s1.isEmpty() ? 0 : s1.pop()) + (s2.isEmpty() ? 0 : s2.pop());ListNode node = new ListNode(carry % 10, dummy.next);dummy.next = node;carry /= 10;}return dummy.next;}
}
C++
/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {stack<int> s1;stack<int> s2;for (; l1; l1 = l1->next) s1.push(l1->val);for (; l2; l2 = l2->next) s2.push(l2->val);int carry = 0;ListNode* dummy = new ListNode();while (!s1.empty() || !s2.empty() || carry) {if (!s1.empty()) {carry += s1.top();s1.pop();}if (!s2.empty()) {carry += s2.top();s2.pop();}ListNode* node = new ListNode(carry % 10, dummy->next);dummy->next = node;carry /= 10;}return dummy->next;}
};
Go
/*** Definition for singly-linked list.* type ListNode struct {*     Val int*     Next *ListNode* }*/
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {s1, s2 := arraystack.New(), arraystack.New()for l1 != nil {s1.Push(l1.Val)l1 = l1.Next}for l2 != nil {s2.Push(l2.Val)l2 = l2.Next}carry, dummy := 0, new(ListNode)for !s1.Empty() || !s2.Empty() || carry > 0 {v, ok := s1.Pop()if ok {carry += v.(int)}v, ok = s2.Pop()if ok {carry += v.(int)}node := &ListNode{Val: carry % 10, Next: dummy.Next}dummy.Next = nodecarry /= 10}return dummy.Next
}
Swift
/*** Definition for singly-linked list.* public class ListNode {*     var val: Int*     var next: ListNode?*     init() { self.val = 0; self.next = nil; }*     init(_ val: Int) { self.val = val; self.next = nil; }*     init(_ val: Int, _ next: ListNode?) { self.val = val; self.next = next; }* }*/class Solution {func addTwoNumbers(_ l1: ListNode?, _ l2: ListNode?) -> ListNode? {var s1: [Int] = []var s2: [Int] = []var node1 = l1var node2 = l2while let n1 = node1 {s1.append(n1.val)node1 = n1.next}while let n2 = node2 {s2.append(n2.val)node2 = n2.next}var carry = 0let dummy: ListNode? = ListNode(0)while !s1.isEmpty || !s2.isEmpty || carry != 0 {carry += (s1.isEmpty ? 0 : s1.removeLast()) + (s2.isEmpty ? 0 : s2.removeLast())let node = ListNode(carry % 10)node.next = dummy?.nextdummy?.next = nodecarry /= 10}return dummy?.next}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/20606.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

numpy(02 数据类型和数据类型转换)

numpy(01 入门) 目录 一、Python NumPy 数据类型 1.1 NumPy 基本类型 1.2 数据类型对象 (dtype) 1.3 具体实例 二、Numpy数据类型转换 2.1 浮点数据转换 2.2 整型数据转换 2.3 浮点数转整数 一、Python NumPy 数据类型 1.1 NumPy 基本类型 下表列举了常用 NumPy 基…

python: SQLAlchemy (ORM) Simple example using SQLite

领域层&#xff08;Domain&#xff09;&#xff1a;定义了 School 实体类和 SchoolRepository 抽象基类&#xff0c;明确了业务实体和数据访问的契约。基础设施层&#xff08;Infrastructure&#xff09;&#xff1a;通过 SQLAlchemy 实现了 SchoolRepository 类&#xff0c;负…

MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 高级篇 part 1

第01章_Linux下MySQL的安装与使用 首先在vmware中下载centos7&#xff0c;实际上8更好一点&#xff0c;不过centos已经是时代的眼泪了&#xff0c;我之前已经教过了&#xff0c;不过是忘了&#xff0c;所以重新说一遍&#xff0c;看文档即可 2.开机前修改mac地址 &#xff0…

谈谈 ES 6.8 到 7.10 的功能变迁(1)- 性能优化篇

前言 ES 7.10 可能是现在比较常见的 ES 版本。但是对于一些相迭代比较慢的早期业务系统来说&#xff0c;ES 6.8 是一个名副其实的“钉子户”。 借着工作内升级调研的任务东风&#xff0c;我整理从 ES 6.8 到 ES 7.10 ELastic 重点列出的新增功能和优化内容。将分为 6 个篇幅给…

Vue前端开发-Vant组件之Button组件

Vant 有丰富的UI组件&#xff0c;而基础组件是全部组件的核心&#xff0c;基础组件中将常用的元素做了二次的开发&#xff0c;封装成Vant格式组件&#xff0c;如按钮、图片和布局等&#xff0c;这些封装后的Vant组件&#xff0c;提供了更多面向实际应用的属性和事件&#xff0c…

《机器学习数学基础》补充资料:求解线性方程组的克拉默法则

《机器学习数学基础》中并没有将解线性方程组作为重点&#xff0c;只是在第2章2.4.2节做了比较完整的概述。这是因为&#xff0c;如果用程序求解线性方程组&#xff0c;相对于高等数学教材中强调的手工求解&#xff0c;要简单得多了。 本文是关于线性方程组的拓展&#xff0c;供…

力扣 买卖股票的最佳时机

贪心算法典型例题。 题目 做过股票交易的都知道&#xff0c;想获取最大利润&#xff0c;就得从最低点买入&#xff0c;最高点卖出。这题刚好可以用暴力&#xff0c;一个数组中找到最大的数跟最小的数&#xff0c;然后注意一下最小的数在最大的数前面即可。从一个数组中选两个数…

idea无法联网,离线安装插件

插件地址&#xff1a;https://plugins.jetbrains.com/ JetBrains Marketplace 如果无法进入&#xff0c;可以试试 配置hosts 3.163.125.103 plugins.jetbrains.com ip 变了&#xff0c;可以查询个最新的&#xff1a; https://tool.chinaz.com/speedtest/plugins.jetbrai…

【Spring详解一】Spring整体架构和环境搭建

一、Spring整体架构和环境搭建 1.1 Spring的整体架构 Spring框架是一个分层架构&#xff0c;包含一系列功能要素&#xff0c;被分为大约20个模块 Spring核心容器&#xff1a;包含Core、Bean、Context、Expression Language模块 Core &#xff1a;其他组件的基本核心&#xff…

Spring Boot 定时任务:轻松实现任务自动化

在现代应用开发中&#xff0c;定时任务是一个常见的需求。比如&#xff0c;我们可能需要定时清理过期数据、定时发送邮件通知等。 操作流程 开启定时任务注解 在启动类添加注解EnableScheduling 设置时间&#xff08;固定时间间隔&#xff09; 使用 Scheduled 注解创建定时…

DeepSeek R1生成图片总结2(虽然本身是不能直接生成图片,但是可以想办法利用别的工具一起实现)

DeepSeek官网 目前阶段&#xff0c;DeepSeek R1是不能直接生成图片的&#xff0c;但可以通过优化文本后转换为SVG或HTML代码&#xff0c;再保存为图片。另外&#xff0c;Janus-Pro是DeepSeek的多模态模型&#xff0c;支持文生图&#xff0c;但需要本地部署或者使用第三方工具。…

燧光 XimmerseMR SDK接入Unity

官网SDK文档连接&#xff1a; RhinoX Unity XR SDK 一&#xff1a;下载SDK 下载链接&#xff1a;RhinoX Unity XR SDK 二&#xff1a;打开Unity项目&#xff0c;添加Package 1、先添加XR Core Utilties包和XR Interaction Toolkit包 2、导 2、再导入下载好的燧光SDK 三&…

vue学习笔记

结合目录&#xff0c;点击阅读 文章目录 案例1&#xff1a;第一行vue代码App.vue引入Person.vue案例&#xff1a;改变变量的值案例&#xff1a;改变对象属性值案例&#xff1a;toRefs进行解包案例&#xff1a;给名字首字母大写案例&#xff1a;监视变量值的变化案例&#xff1…

初学PADS使用技巧笔记(也许会继续更新)

操作意图&#xff1a;网上找某个芯片封装又不想自己画&#xff0c;再加上没经验&#xff0c;怎么办&#xff1f; 就以AC-DC芯片PN8036为例&#xff0c;打开嘉立创的的DFM&#xff0c;打开立创商城&#xff0c;输入PN8036&#xff0c;点击数据手册&#xff0c;然后点击直接打开…

解锁机器学习核心算法 | 随机森林算法:机器学习的超强武器

一、引言 在机器学习的广阔领域中&#xff0c;算法的选择犹如为一场冒险挑选趁手的武器&#xff0c;至关重要。面对海量的数据和复杂的任务&#xff0c;合适的算法能够化繁为简&#xff0c;精准地挖掘出数据背后隐藏的模式与价值。机器学习领域有十大核心算法&#xff0c;而随…

LeetCode每日精进:225.用队列实现栈

题目链接&#xff1a;225.用队列实现栈 题目描述&#xff1a; 请你仅使用两个队列实现一个后入先出&#xff08;LIFO&#xff09;的栈&#xff0c;并支持普通栈的全部四种操作&#xff08;push、top、pop 和 empty&#xff09;。 实现 MyStack 类&#xff1a; void push(int x…

二.数据治理流程架构

1、数据治理流程架构核心思想&#xff1a; 该图描绘了一个以数据标准规范体系为核心&#xff0c;大数据生命周期管理为主线&#xff0c;数据资源中心为依托&#xff0c;并辅以数据质量管理和大数据安全与隐私管理的数据治理流程架构。它旨在通过规范化的流程和技术手段&#x…

java_使用Spring Cloud Gateway + nacos实现跨域访问

Spring Cloud Gateway简介 Spring cloud gateway是spring官方基于Spring 5.0、Spring Boot2.0和Project Reactor等技术开发的网关&#xff0c;Spring Cloud Gateway旨在为微服务架构提供简单、有效和统一的API路由管理方式&#xff0c;Spring Cloud Gateway作为Spring Cloud生…

Linux中安装open-webui报sqlite版本低的解决办法

almalinux中安装好open-webui&#xff0c;启动服务时报如下错&#xff1a; RuntimeError: [91mYour system has an unsupported version of sqlite3. Chroma requires sqlite3 > 3.35.0.[0m [94mPlease visit https://docs.trychr…

基于SpringBoot+Vue的老年人体检管理系统的设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…