刷题日记《链表02》

news2025/1/12 20:58:53

题目描述

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

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

  

解题思路

面对这种求和相加的题目,不知道有没有同学与我的第一反应一样:利用StringBuilder将链表中的每一位分解出来,之后利用Integer.pasreInt()将两个数相加,再重新分解每一位创建新链表,但是这种方法是行不通的,因为题目中给出了提示链表长度在1-100之间,意味着如果使用这种方法必然会因为算数结果溢出而导致最终结果错误

我们在此处使用辅助栈空间解决此问题:因为栈空间恰好与此题的要求相符合:栈空间中的元素先进后出,恰好能实现从个位到十位到百位...的按位依次相加,而关于此题目的具体实现思路如下:首先将两个链表中结点对应的数字依次加入到两个不同的栈空间中,然后按位从栈空间中依次取值,利用进位变量carry来实现每一位的相加即可。

完整代码

class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        //使用双辅助栈进行相加
        Stack<Integer>stack1=new Stack<>();
        Stack<Integer>stack2=new Stack<>();
        //将所有结点的值依次遍历到栈空间中
        ListNode tmp1=l1;
        ListNode tmp2=l2;
        while(tmp1!=null){
            stack1.push(tmp1.val);
            tmp1=tmp1.next;
        }
         while(tmp2!=null){
            stack2.push(tmp2.val);
            tmp2=tmp2.next;
        }
        ListNode ans=null;
        //循环取数
        int num1=0,num2=0,carry=0;
        while(!stack1.empty()||!stack2.empty()||carry!=0){
            num1=stack1.empty()?0:stack1.pop();
            num2=stack2.empty()?0:stack2.pop();
            //修正值
            int sum=num1+num2+carry;
            carry=sum/10;
            sum=sum%10;
           ListNode cur=new ListNode(sum);
           cur.next=ans;
           ans=cur;
        }
        return ans;
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

windows 下安装 mysql-8.0.25 解压版

介绍 此文介绍 mysql-8.0.25-winx64 的 zip 解压版&#xff0c;在 windows 下的安装与配置过程。 官方下载 官网下载页&#xff1a; https://downloads.mysql.com/archives/community/ 进入官网&#xff0c;选择默认版本就行&#xff0c;不需要包含测试工具套件的版本 本地解…

C++ day40

1、思维导图 2、定义一个命名空间Myspace&#xff0c;包含以下函数&#xff1a;将一个字符串中的所有单词进行反转&#xff0c;并输出反转后的结果。例如&#xff0c;输入字符串为"Hello World"&#xff0c;输出结果为"olleH dlroW"&#xff0c;并在主函数…

0基础入门---第四章---误差反向传播法

&#x1f31e;欢迎来到深度学习的世界 &#x1f308;博客主页&#xff1a;卿云阁 &#x1f48c;欢迎关注&#x1f389;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f31f;本文由卿云阁原创&#xff01; &#x1f64f;作者水平很有限&#xff0c;如果发现错误&#xff…

Java性能权威指南-总结19

Java性能权威指南-总结19 Java EE性能调优JVM线程调优调节线程栈大小偏向锁自旋锁线程优先级 小结 Java EE性能调优Web容器的基本性能 Java EE性能调优 JVM线程调优 JVM的某些调优策略可以影响线程和同步的性能。 调节线程栈大小 当空间非常珍贵时&#xff0c;可以调节线程…

Day6——Web安全基础

网络安全学习笔记Day6 Web安全基础 一.Web简介什么是Web&#xff1f;什么是因特网&#xff1f;互联网&#xff0c;因特网&#xff0c;万维网的关系万维网构想的诞生http协议URL 二.Web发展史Web1.0Web2.01.0与2.0的区别Web1.0的安全漏洞Web2.0的安全漏洞 三.杂项门户网站静态页…

戴尔笔记本如何用U盘重装Win10系统?

戴尔笔记本如何用U盘重装Win10系统&#xff1f;很多使用戴尔笔记本的用户&#xff0c;都想知道如何用U盘来重装Win10系统&#xff0c;用户首先要确认自己的戴尔笔记本电脑能不能联网&#xff0c;然后再准备一个8G以上的U盘&#xff0c;最后根据小编分享的戴尔笔记本用U盘重装Wi…

Springboot Mybatis 不存在插入数据,存在则更新数据

前言 是不是经常看到代码&#xff0c; 查一下数据库&#xff0c;如果存在数据&#xff0c;就做更新语句调用&#xff1b; 如果不存在&#xff0c;就插入。 今天该篇介绍的 是使用 INSERT INTO ON DUPLICATE KEY UPDATE 来实现我们上述的场景&#xff0c; 不需要…

不能真“生成代码”的“低代码”平台,不可能获得程序员的认可

目录 前言 思考 解决问题 基本现状 发现亮点 前言 >前几天我和一个好友聊天的时候&#xff0c;他是这么评价低代码平台的&#xff1a;“想证明程序员都是傻X&#xff0c;又想让程序员买单&#xff01;程序员本身心里就不爽... ” 那么&#xff0c;低代码发展势头迅猛的…

Live800:客服系统如何帮助企业优化服务流程

随着互联网的发展和社会进步&#xff0c;客服服务已经成为企业经营中不可或缺的一部分&#xff0c;然而&#xff0c;客服服务一直以来都备受诟病&#xff0c;用户对客服人员的不满情绪也随之而来。显然企业急需提升客户服务质量&#xff0c;这就离不开客服系统的帮助。 那么&am…

Linux系统中的信号

信号是由用户、系统或者进程发送给目标进程的信息&#xff0c;以通知目标进程某个状态的改变或系统异常。Linux信号可由如下条件产生&#xff1a; 对于前台进程&#xff0c;用户可以通过输入特殊的终端字符来给它发送信号。比如输入CtrlC通常会给进程发送一个中断信号&#xf…

人类语言和机器语言

人类语言和机器语言是两种不同的语言形式&#xff0c;二者之间有很多异同点。人类语言是人们日常交流所使用的语言&#xff0c;也是一种自然语言&#xff0c;人类语言是非常复杂和多样化的&#xff0c;包括文字、口语、手语等等&#xff0c;而机器语言则是非常简单和规范化的一…

Maven项目,本地jar包导入手动导入到Maven库中

当你的项目&#xff0c;由于网络或者环境这些问题&#xff0c;无法从maven中央仓库更新jar包到本地的时候&#xff0c;可以尝试下面方法&#xff0c;手动添加jar包到Maven仓库&#xff1b; 方法一&#xff08;推荐&#xff09;&#xff1a; 1、需要先拿到你的jar包&#xff0…

Linux——3Linux用户和权限

目录 3.1 认识root用户 root用户&#xff08;超级管理员&#xff09; su 和 exit命令 sudo命令 3.2 用户、用户组 3.3 修改权限控制 - chmod 3.4 修改权限控制 - chown 3.1 认识root用户 root用户&#xff08;超级管理员&#xff09; 无论是Windows、MacOS、Linux均采…

8.10 TCP是如何实现可靠传输的

目录 TCP 最主要的特点 面向流的概念 Socket 有多种不同的意思 TCP是如何实现可靠传输的&#xff1f; A 如何知道 B 是否正确收到了 M1 呢&#xff1f; 确认丢失 确认迟到 连续 ARQ 协议 累计确认 TCP报文段的首部格式 TCP 最主要的特点 TCP 是面向连接的运输层协议&a…

基于Java理发店会员管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

深入探析CAN收发器NCV7342D10R2G各项参数

NCV7342D10R2G安森美深力科 CAN收发器是控制器局域网&#xff08;CAN&#xff09;协议控制器和物理总线之间的接口&#xff0c;可用于12V和24V系统。收发器向总线提供差分传输能力&#xff0c;向CAN控制器提供差分接收能力。由于接收器输入的共模电压范围很宽能够达到卓越的电磁…

charles unknown 问题和手机代理设置(iOS手机)

一、Charles下载 下载地址&#xff1a;https://www.charlesproxy.com/download/ 二、Charles配置代理 1.查看本机IP&#xff1a;help-->Local IP Address 2.查看或者设置访问端口&#xff1a;Proxy->Proxy Settings 3.设置不代理计算机的请求&#xff08;推荐&#xff0…

【Java】Java核心 76:XML解析 Dom4j (下)

文章目录 **3** **使用xpath技术结合DOM4J技术读取xml文件(了解)**1.概念介绍2.XPath使用步骤3.XPath语法(了解)3.1全文搜索路径表达式方式 掌握 3 使用xpath技术结合DOM4J技术读取xml文件(了解) 1.概念介绍 问题&#xff1a;通过上面的案例我们发现有个小问题.就是获取标签的…

Python程序设计期末作品完整版|代码和程序设计文档

python程序设计作品&#xff0c;希望对您有帮助&#xff0c;希望您的一键三连&#xff01; 程序设计报告 1.爬取数据的意义 富豪榜的出现&#xff0c;体现了人们思想的变化:由保守藏富向正向面对财富的转变;由保守向文明开放(–说明了大众媒体的进步与教育的普及等思想工具的极…

会网络爬虫能干什么?

网络爬虫是一种自动化程序&#xff0c;用于浏览互联网并从网页中获取数据。它可以执行以下任务&#xff1a; 数据采集&#xff1a;网络爬虫可以访问网站&#xff0c;并从中提取所需的数据&#xff0c;例如新闻文章、产品信息、用户评论等。这些数据可以用于各种目的&#xff0…