算法通关村第二关——链表加法的问题解析
题目类型
链表反转、栈
题目描述
* 题目: * 给你两个非空链表来表示两个非负整数,数字最高位位于链表的开始位置。 * 它们的每个节点都只存储一个数字。将这两个数相加会返回一个新的链表。 * 你可以假设除了数字0外,这两个数字都不会以0开头
示例
输入:6 --> 1 -->7 和 2 --> 9 -->5
输出: 9 --> 1 --> 2
实现方式
栈
反转链表
栈实现
思路
先将两个链表的元素分别压栈,然后再一起出栈,将两个结果分别计算。之后对计算的结果取模,模数保存到新的链表中,进位保存到下一轮,完成之后再进行一次反转就行了
事项
我们知道在链表插入有头插法和尾插法两种。头插法就是每次都将新的结点插到head之前。而尾插法就是将新结点都插入到链表的表尾。两者的区别是尾插法的顺序与原始链表是一致的,而头插法与原始链表是逆序的,所以上面最后步如果不想进行反转,可以将新结点以头插法
代码实现
/*** 使用栈实现两数相加* @param head1 第一个链表头节点* @param head2 第二个链表头节点* @return 相加后的到的链表头节点*/public Node andTwoSingleListByStack(Node head1 , Node head2){Stack<Node> stack1 = new Stack<>();Stack<Node> stack2 = new Stack<>();// 将链表节点数据入栈while (head1 != null){stack1.push(head1);head1 = head1.next;}while (head2 != null){stack2.push(head2);head2 = head2.next;}// 构造虚拟节点Node dummyNode = new Node(0);// carry 用于标识是否有进位int carry = 0;while (!stack1.empty() || !stack2.empty() || carry != 0){// 使用两个链表来存储栈中的数据Node a = new Node(0);Node b = new Node(0);if (!stack1.empty()){a = stack1.pop();}if (! stack2.empty()){b = stack2.pop();}int sum = a.data + b.data + carry;int ans = sum % 10;carry = sum / 10;Node cur = new Node(ans);cur.next = dummyNode.next;dummyNode.next = cur;}return dummyNode.next;}
链表反转实现
思路
先将两个链表分别反转,最后计算完之后再将结果反转,一共有三次反转操作
代码实现
public Node addTwoSingleListByReverseList(Node head1 , Node head2){// 反转链表,将低位放在表头,高位放在表尾head1 = reverseList(head1);head2 = reverseList(head2);// 定义虚拟节点Node dummyNode = new Node(0);Node cur = dummyNode;int carry = 0;while (head1 != null || head2 != null){int val = carry;if (head1 != null){val += head1.data;head1 = head1.next;}if (head2 != null){val += head2.data;head2 = head2.next;}int ans = val % 10;carry = val / 10;cur.next = new Node(ans);cur = cur.next;}if (carry > 0 ){cur.next = new Node(carry);}return reverseList(dummyNode.next);}private Node reverseList(Node head){Node pre = null;Node cur = head;while (cur != null){Node next = cur.next;// 发生关系cur.next = pre;pre = cur;cur = next;}return pre;}
相关文章:
算法通关村第二关——链表加法的问题解析
题目类型 链表反转、栈 题目描述 * 题目: * 给你两个非空链表来表示两个非负整数,数字最高位位于链表的开始位置。 * 它们的每个节点都只存储一个数字。将这两个数相加会返回一个新的链表。 * 你可以假设除了数字0外,这两个数字都不会以0开头…...
mapboxGL中楼层与室内地图的结合展示
概述 质量不够,数量来凑,没错,本文就是来凑数的。前面的几篇文章实现了楼栋与楼层单体化的展示、室内地图的展示,本文结合前面的几篇文章,做一个综合的展示效果。 实现效果 实现 1. 数据处理 要实现上图所示的效果…...
使用Anaconda3创建pytorch虚拟环境
一、Conda配置Pytorch环境 1.conda安装Pytorch环境 打开Anaconda Prompt,输入命令行: conda create -n pytorch python3.6 输入y,再回车。 稍等,便完成了Pytorch的环境安装。我们可以利用以下命令激活pytorch环境。 conda…...
QT 常用数据结构整理
目录 QString篇 QString篇 //初始化bool bOk false;QString str "sd";QString strTemp(str);str QString("%1,%2").arg("11").arg("-gg");qDebug()<<str;str.sprintf("%s %d","ni",1);qDebug()<<…...
Fiddler使用教程|渗透测试工具使用方法Fiddler
提示:如有问题可联系我,24小时在线 文章目录 前言一、Fiddler界面介绍二、菜单栏1.菜单Fiddler工具栏介绍Fiddler命令行工具详解 前言 网络渗透测试工具: Fiddler是目前最常用的http抓包工具之一。 Fiddler是功能非常强大,是web…...
网站密码忘记了怎么办?chrome浏览器,谷歌浏览器。
有时候忘记了网站的密码,又不想“忘记密码”去一番折腾。如果你正好用的是 chrome 浏览器。 那么根本就没必要折腾,直接就能看到网站密码。 操作如下 1.在浏览器右上角点击三个小点: 2.点这三个点: 3.选择“显示密码”&#x…...
23款奔驰GLS450加装原厂香氛负离子系统,清香宜人,久闻不腻
奔驰原厂香氛合理性可通过车内空气调节组件营造芳香四溢的怡人氛围。通过更换手套箱内香氛喷雾发生器所用的香水瓶,可轻松选择其他香氛。香氛的浓度和持续时间可调。淡雅的香氛缓缓喷出,并且在关闭后能够立刻散去。车内气味不会永久改变,香氛…...
流数据湖平台Apache Paimon(一)概述
文章目录 第1章 概述1.1 简介1.2 核心特性1.3 基本概念1.3.1 Snapshot1.3.2 Partition1.3.3 Bucket1.3.4 Consistency Guarantees一致性保证 1.4 文件布局1.4.1 Snapshot Files1.4.2 Manifest Files1.4.3 Data Files1.4.4 LSM Trees 第1章 概述 1.1 简介 Flink 社区希望能够将…...
上传图片到腾讯云对象存储桶cos 【腾讯云对象存储桶】【cos】【el-upload】【vue3】【上传头像】【删除】
1、首先登录腾讯云官网控制台 进入对象存储页面 2、找到跨越访问CIRS设置 配置规则 点击添加规则 填写信息 3、书写代码 这里用VUE3书写 第一种用按钮出发事件形式 <template><div><input type"file" change"handleFileChange" /><…...
Hadoop教程_编程入门自学教程_菜鸟教程-免费教程分享
教程简介 Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统( Distributed File System)࿰…...
Mac 快速生成树形项目结构目录
我这里使用的是通过包管理 Homebrew安装形式。没有安装的话可以自行搜索 Homebrew 安装方式 brew install tree直接到项目的根目录执行 tree 命令 tree 效果如下: or : tree -CfL 3效果如下:...
使用fegin调用时,返回的值不能直接List这种,要使用对象包装一下
正确使用如下 fegin ResponseBodyGetMapping(value "/menu/queryAllNonLowCodePageSubmenuById")public Result<List<LinkTheFormPageDataDTO>> queryAllNonLowCodePageSubmenuById(RequestParam("id")int id);服务 ResponseBodyGetMapping(…...
springboot整合myabtis+mysql
一、pom.xml <!--mysql驱动包--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!--springboot与JDBC整合包--><dependency><groupId>org.springframework.b…...
博客摘录「 Redis( 缓存篇 ==> 超详细的缓存介绍与数据一致性解决方案 amp; 代码实现」
Redis 旁路缓存 由于高并发原因,先更新数据库和先更新缓存策略都会因为延迟时间而导致数据不一致问题。 两种策略 先删除缓存,再更新数据库;先更新数据库,再删除缓存。 因为缓存的写入通常要远远快于数据库的写入,…...
Chapter 8: Files | Python for Everybody 讲义笔记_En
文章目录 Python for Everybody课程简介FilesPersistenceOpening filesText files and linesReading filesSearching through a fileLetting the user choose the file nameUsing try, except, and openWriting filesDebuggingGlossary Python for Everybody Exploring Data Us…...
【C++ 进阶】第 1 章:[C 语言基础] C 语言概述与数据类型
目录 一、C 语言的概述 (1)计算机结构组成 (2)计算机系统组成 (3)ASCII 码 (4)计算机中的数制及其转换 (5)程序与指令 (6)语…...
点击图片1.全屏阅览2.下载3.关闭 纯纯html css js
要实现图片点击全屏预览的功能,可以使用JavaScript和CSS来实现。以下是一个简单的示例代码: html <!DOCTYPE html> <html> <head><meta charsett"UTF-8"><title>图片点击全屏预览</title><style>…...
科技项目验收测试:验证软件产品功能与性能的有效手段
科技项目验收测试是验证软件产品功能与性能的重要手段,在项目开发中起到了至关重要的作用。本文将从产品质量、需求验证、性能测试等方面,探讨科技项目验收测试的有效手段。 1、产品质量保证是验收测试的核心 科技项目验收测试的核心目标是验证软件产品…...
Spring MVC学习笔记,包含mvc架构使用,过滤器、拦截器、执行流程等等
😀😀😀创作不易,各位看官点赞收藏. 文章目录 Spring MVC 习笔记1、Spring MVC demo2、Spring MVC 中常见注解3、数据处理3.1、请求参数处理3.2、响应数据处理 4、RESTFul 风格5、静态资源处理6、HttpMessageConverter 转换器7、过…...
【LeetCode 算法】Linked List Cycle 环形链表
文章目录 Linked List Cycle 环形链表问题描述:分析代码哈希快慢指针 Tag Linked List Cycle 环形链表 问题描述: 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达…...
深入解析C++中获取进程模块基址的高效实现方法
1. 为什么需要获取进程模块基址 在Windows系统编程中,获取进程模块基址是一个基础但极其重要的操作。简单来说,模块基址就是某个DLL或EXE文件被加载到内存中的起始地址。这个地址就像是模块在内存中的"门牌号",有了它我们才能找到模…...
C#处理复杂JSON数据:Newtonsoft.Json多级嵌套反序列化实战(附避坑指南)
C#处理复杂JSON数据:Newtonsoft.Json多级嵌套反序列化实战(附避坑指南) 在当今数据驱动的开发环境中,JSON已成为事实上的数据交换标准。特别是对于C#开发者而言,处理来自API响应、配置文件或NoSQL数据库的复杂JSON结构…...
YOLOv8预测结果一键导出:自定义路径+日期文件夹,还能合并所有标签到单个TXT文件
YOLOv8预测结果高效管理:自动化归档与标签合并实战指南 当你在使用YOLOv8完成目标检测任务后,是否经常遇到这样的困扰:检测结果散落在不同文件夹中难以追溯,标签文件分散在各个角落不便统计,每次手动整理既耗时又容易出…...
避坑指南:在K210上跑人脸68关键点,这些细节让你的疲劳检测更准
K210人脸疲劳检测实战:68关键点调优与工程化避坑指南 当你在车载监控或工业安全场景部署基于K210的疲劳检测系统时,是否遇到过这些情况?明明按照开源代码跑通了68关键点检测,但实际场景中闭眼判断总是不准;白天阳光直射…...
终极指南:如何用NSC_BUILDER一键搞定Switch游戏文件管理
终极指南:如何用NSC_BUILDER一键搞定Switch游戏文件管理 【免费下载链接】NSC_BUILDER Nintendo Switch Cleaner and Builder. A batchfile, python and html script based in hacbuild and Nuts python libraries. Designed initially to erase titlerights encryp…...
Qwen2-VL-2B-Instruct一键部署教程:基于Ubuntu 20.04的GPU环境快速搭建
Qwen2-VL-2B-Instruct一键部署教程:基于Ubuntu 20.04的GPU环境快速搭建 你是不是也遇到过这种情况?看到一个很酷的多模态大模型,想立刻上手试试,结果被复杂的依赖安装、环境配置、驱动适配搞得头大,折腾半天还没跑起来…...
Qwen3.5-9B惊艳案例:128K上下文下跨页PDF内容精准摘要
Qwen3.5-9B惊艳案例:128K上下文下跨页PDF内容精准摘要 1. 模型核心能力展示 Qwen3.5-9B作为一款90亿参数的开源大语言模型,在多个领域展现出令人印象深刻的能力。我们特别测试了其在处理长文档时的表现,结果令人惊喜。 1.1 长上下文处理能…...
Ubuntu系统磁盘管理
要在Ubuntu系统中开机自动挂载AWS EBS卷(设备名为/dev/xvdd),需通过**/etc/fstab文件**配置自动挂载规则。以下是完整步骤(含前提条件、命令和验证): 一、前提条件 确认磁盘状态:/dev/xvdd需已…...
dupeguru文件类型过滤终极指南:轻松管理重复文件的秘密武器
dupeguru文件类型过滤终极指南:轻松管理重复文件的秘密武器 【免费下载链接】dupeguru Find duplicate files 项目地址: https://gitcode.com/gh_mirrors/du/dupeguru 你是否曾经面对电脑中堆积如山的重复文件感到头疼?想要只清理图片却误删了重要…...
ncmdumpGUI:网易云音乐加密文件转换的完整解决方案
ncmdumpGUI:网易云音乐加密文件转换的完整解决方案 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 一、初识ncmdumpGUI:解密音乐文件的…...
