算法通关村第二关——链表加法的问题解析
题目类型
链表反转、栈
题目描述
* 题目: * 给你两个非空链表来表示两个非负整数,数字最高位位于链表的开始位置。 * 它们的每个节点都只存储一个数字。将这两个数相加会返回一个新的链表。 * 你可以假设除了数字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 指针再次到达…...
百度网盘下载速度太慢?Python脚本帮你获取高速直链
百度网盘下载速度太慢?Python脚本帮你获取高速直链 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 还在为百度网盘几十KB的下载速度而苦恼吗?想要摆脱客…...
机器学习记忆化:平衡隐私、鲁棒性与公平性的核心技术挑战
1. 项目概述:当机器学习开始“记住”数据时,我们面临什么?在构建一个机器学习模型时,我们总希望它能像一位聪明的学生,不仅记住课本上的例题,更能理解背后的原理,从而在考场上举一反三。但现实往…...
如何快速掌握BepInEx插件框架:新手的完整避坑指南
如何快速掌握BepInEx插件框架:新手的完整避坑指南 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx BepInEx插件框架是Unity Mono、IL2CPP和.NET框架游戏的强大插件和模组…...
嵌入式开发中LLM应用的挑战与优化实践
1. 嵌入式系统开发中的LLM应用现状嵌入式系统开发作为连接软件与硬件的关键领域,其特殊性给大语言模型(LLM)的应用带来了独特挑战。与通用软件开发不同,嵌入式开发需要处理硬件寄存器配置、实时性要求、资源约束等底层问题。当前主…...
告别传统地形!用Unreal Engine的Voxel Plugin手把手教你做可破坏的无限世界(含动态NavMesh配置)
告别传统地形!用Unreal Engine的Voxel Plugin打造可破坏的无限世界在游戏开发领域,地形系统一直是构建虚拟世界的基石。传统Landscape系统虽然成熟稳定,但面对日益增长的玩家对交互性和自由度的需求,静态地形已经难以满足现代沙盒…...
01-大模型AI:大模型学习指南
大模型概述 一、大模型训练的三大核心阶段 预训练:自监督学习的“知识积累期” 预训练是大模型的“启蒙阶段”,采用自监督学习模式。模型像海绵一样从海量文本数据中自主学习语言规律、语义关联和世界知识。例如,训练一个AI领域大模型时,会输入数百万篇AI论文、技术博客…...
JWT认证深度解析:从签名原理到密钥轮换与灰度升级
1. 这不是“加个Token就完事”的流程,而是身份信任的完整传递链JWT认证流程(JSON Web Token)——这七个字在今天几乎成了后端接口开发的标配术语。但你有没有遇到过这样的情况:前端传了token,后端校验通过,…...
终极图像描述评估指南:5大核心指标深度解析与应用实践
终极图像描述评估指南:5大核心指标深度解析与应用实践 【免费下载链接】coco-caption 项目地址: https://gitcode.com/gh_mirrors/co/coco-caption 在人工智能视觉领域,图像描述生成技术正以前所未有的速度发展。然而,如何科学评估模…...
AI agent案例汇总:基于 LangGraph 的智能对话 Agent 实现
实现了一个具备记忆功能和工具调用能力的智能对话 Agent,基于 LangChain 框架构建,可实现天气查询、数学运算两大核心功能,同时支持多轮对话记忆。代码中初始化了大模型并配置相关参数,通过装饰器定义工具函数,让 Agen…...
Unity UI实战:Input Field输入框从入门到精通,搞定用户交互与数据获取
Unity UI实战:Input Field输入框从入门到精通,搞定用户交互与数据获取在游戏和应用开发中,用户输入是不可或缺的交互环节。无论是简单的登录界面、复杂的设置面板,还是实时聊天系统,Input Field都是连接用户与程序的关…...
