【题解】NC40链表相加(二)(链表 + 高精度加法)

https://www.nowcoder.com/practice/c56f6c70fb3f4849bc56e33ff2a50b6b?tpId=196&tqId=37147&ru=/exam/oj
在这里插入图片描述

class Solution {
  public:
    // 逆序链表
    ListNode* reverse(ListNode* head) {
        // 创建一个新节点作为逆序后链表的头节点
        ListNode* newHead = new ListNode(0);
        // 当前节点指针指向原链表的头节点
        ListNode* cur = head;
        // 遍历原链表
        while (cur) {
            // 保存当前节点的下一个节点
            ListNode* next = cur->next;
            // 将当前节点插入到新链表的头部
            cur->next = newHead->next;
            newHead->next = cur;
            // 更新当前节点为原链表中的下一个节点
            cur = next;
        }
        // 保存逆序后的链表头节点
        cur = newHead->next;
        // 释放新节点
        delete newHead;
        // 返回逆序后的链表头节点
        return cur;
    }

    ListNode* addInList(ListNode* head1, ListNode* head2) {
        // 1. 逆序两个链表
        head1 = reverse(head1);
        head2 = reverse(head2);

        // 2. ⾼精度加法
        int carry = 0; // 进位
        ListNode* cur1 = head1, *cur2 =
                             head2; // 分别指向两个链表的当前节点
        ListNode* ret = new ListNode(0); // 结果链表的头节点
        ListNode* prev = ret; // 指向结果链表当前节点的前一个节点
        // 遍历两个链表或者进位不为0
        while (cur1 || cur2 || carry) {
            if (cur1) {
                carry += cur1->val;
                cur1 = cur1->next;
            }
            if (cur2) {
                carry += cur2->val;
                cur2 = cur2->next;
            }
            // 将当前位的数字插入到结果链表中
            prev = prev->next = new ListNode(carry % 10);
            carry /= 10; // 更新进位
        }

        // 释放结果链表头节点
        cur1 = ret->next;
        ret->next = nullptr;
        delete ret;

        // 3. 逆序结果链表并返回
        return reverse(cur1);
    }
};

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用51单片机控制T0和T1分别间隔1秒2秒亮灭逻辑

#include <reg51.h>sbit LED1 P1^0; // 设置LED1灯的接口 sbit LED2 P1^1; // 设置LED2灯的接口unsigned int cnt1 0; // 设置LED1灯的定时器溢出次数 unsigned int cnt2 0; // 设置LED2灯的定时器溢出次数// 定时器T0 void Init_Timer0() {TMOD | 0x01;; // 定时器…

代码学习记录49---单调栈

随想录日记part49 t i m e &#xff1a; time&#xff1a; time&#xff1a; 2024.04.20 主要内容&#xff1a;今天开始要学习单调栈的相关知识了&#xff0c;今天的内容主要涉及&#xff1a;柱状图中最大的矩形 84.柱状图中最大的矩形 Topic184.柱状图中最大的矩形 题目&…

Sharding-JDBC笔记1

Sharding-JDBC笔记1 1.分库分表1.1 垂直分库1.2 垂直分表1.3 水平分库1.4 水平分表 2.存在问题2.1 事务一致性2.2 跨节点关联查询2.3 跨节点分页、排序函数2.4 主键避重2.5 公共表 1.分库分表 分库分表就是为了解决由于数据量过大而导致数据库性能降低的问题&#xff0c;将原来…

操作符不存在:sde.st_geometry ^ !sde.st_geometry建议 SQL函 数st_intersects在内联inlining期间

操作符不存在&#xff1a;sde.st_geometry ^ &#xff01;sde.st_geometry建议 SQL函 数st_intersects在内联inlining期间 问题&#xff1a;最近在使用SQL图形处理函数处理图形时&#xff0c;莫名奇妙报如下错误&#xff0c;甚是费解 于是开始四处"寻医问药" 1、nav…

Spark集群的搭建

1.1搭建Spark集群 Spark集群环境可分为单机版环境、单机伪分布式环境和完全分布式环境。本节任务是学习如何搭建不同模式的Spark集群&#xff0c;并查看Spark的服务监控。读者可从官网下载Spark安装包&#xff0c;本文使用的是spark-2.0.0-bin-hadoop2.7.gz。 1.1.1搭建单机版…

“开挂”的WAAP全站防护是云海驰骋的必备

何为攻击&#xff1f; 网络和应用是攻击的两大阵地 网络攻击像僵尸&#xff1a;简单、粗暴、让人猝不及防 显著特征&#xff1a;流量大&#xff0c;并发高 应用攻击像幽灵&#xff1a;复杂、神秘、让人摸不着头脑 显著特征&#xff1a;流量小、隐蔽强 攻击不像“馅饼”&…

OpenHarmony实战开发-组件复用实践。

若开发者的应用中存在以下场景&#xff0c;并成为UI线程的帧率瓶颈&#xff0c;应该考虑使用组件复用机制提升应用性能&#xff1a; 滑动场景下对同一类自定义组件的实例进行频繁的创建与销毁。反复切换条件渲染的控制分支&#xff0c;且控制分支中的组件子树结构比较复杂。 …

SpringBoot3 + Vue3 + Element-Plus + TS 实现动态二级菜单级联选择器

SpringBoot3 Vue3 Element-Plus TS 实现动态二级菜单选择器 1、效果展示1.1 点击效果1.2 选择效果1.3 返回值1.4 模拟后端返回数据 2、前端代码2.1 UnusedList.vue2.2 goodsType.ts2.3 http.ts 3、后端代码3.1 GoodsCategoryController.java3.2 GoodsCategoryService.java3.…

读后感-有效沟通

司内的学习已开展8期&#xff0c;内容主要以如何沟通为主&#xff0c;这里将根据个人的学习体会&#xff0c;对所学内容进行梳理与整合&#xff0c;以期更好地吸收和应用所学知识。 沟通是一门技术&#xff0c;其轨迹可循。自来熟的态度&#xff0c;一上来便滔滔不绝地发表言论…

ThingsBoard系统层配置邮件发送

1、前沿 2、案例 1、管理员的身份进行登录 2、选择账户&#xff0c;并将邮箱更改为自己的邮箱&#xff0c;并保存配置 3、退出账号&#xff0c;使用邮箱进行登录&#xff0c;密码还是跟之前一样 4、登录后选择设置-发送邮件 5、登录邮箱申请邮箱的密钥 ​7、 按照图片填…

Mysql The last packet sent successfully to the server was 0 milliseconds ago.

项目启动后&#xff0c;报错&#xff0c;但是我的navicat 数据库连接工具是连接上的&#xff0c;没有问题的&#xff0c;但是程序就是连接不上。端口放开了&#xff0c;防火墙也放开了 先说问题&#xff1a;是网络问题&#xff0c; 如何解决&#xff1a;因为我的机子上又跑了…

计算机网络——数据链路层(介质访问控制)

计算机网络——数据链路层&#xff08;介质访问控制&#xff09; 介质访问控制静态划分信道动态划分信道ALOHA协议纯ALOHA&#xff08;Pure ALOHA&#xff09;原理特点 分槽ALOHA&#xff08;Slotted ALOHA&#xff09;原理特点 CSMA协议工作流程特点 CSMA-CD 协议工作原理主要…

RabbitMQ学习记录

核心概念 Brocker&#xff1a;消息队列服务器实体 Exchange(消息交换机)&#xff1a;它指定消息按什么规则&#xff0c;路由到哪个队列。 Queue(消息队列载体)&#xff1a;每个消息都会被投入到一个或多个队列。 Binding(绑定)&#xff1a;它的作用就是把exchange和queue按…

电磁兼容(EMC):静电放电(ESD)抗扰度试验深度解读(三)

目录 1. 静电抗扰度试验标准试验程序定制的目的 2. 环境条件对充电量的影响 3. 环境级别与空气和接触放电的关系 4. 试验等级的选择 1. 静电抗扰度试验标准试验程序定制的目的 保护设备免受静电放电影响的问题对制造厂和用户来说都是相当重要的。 随着微电子元件的广泛应用…

gradle安装和部署

准备工作 下载地址&#xff1a;https://gradle.org/releases/ 安装和配置环境变量 将压缩包解压到/usr/local/目录下 unzip gradle-8.7-bin.zip -d /usr/local/找到gradle的安装目录/usr/local/gradle-8.7 编辑/etc/vi /etc/profileprofile配置环境变量&#xff08;这是ce…

《强势》如何在工作、恋爱和人际交往中快速取得主导权? - 三余书屋 3ysw.net

强势&#xff1a;如何在工作、恋爱和人际交往中快速取得主导权&#xff1f; 大家好&#xff0c;今天我们要解读的是一本名为《强势》的书籍。我将花费大约20分钟的时间&#xff0c;为您详细讲解这本书的精华内容&#xff0c;包括如何在家庭关系、职场关系和朋友关系中迅速取得…

Flowable 基本用法

一. 什么是Flowable Flowable 是一个基于 Java 的开源工作流引擎&#xff0c;用于实现和管理业务流程。它提供了强大的工作流引擎和一套丰富的工具&#xff0c;使开发人员能够轻松地建模、部署、执行和监控各种类型的业务流程。Flowable 是 Activiti 工作流引擎的一个分支&am…

项目7-音乐播放器4+喜欢/收藏音乐

1.喜欢/收藏音乐模块设计 1.1 请求响应模块设计 请求&#xff1a; { post, /lovemusic/likeMusic data: id//音乐id } 响应&#xff1a; { "status": 0, "message": "点赞音乐成功", "da…

环境监测系统--------MQ系列气体检测模块驱动教程(保姆级教程)

⏩ 大家好哇&#xff01;我是小光&#xff0c;嵌入式爱好者&#xff0c;一个想要成为系统架构师的大三学生。 ⏩在环境检测中我们经常会用到检测气体的传感器&#xff0c;检测乙醇、甲烷、一氧化碳、氢气等等&#xff0c;博主呕心沥血对MQ系列传感器做一个史上最详细的使用教程…

UML类图详解

UML类图结构解析 UML类图是一种结构图&#xff0c;用于描述系统的静态结构。它主要用于展示系统中的类&#xff08;class&#xff09;、接口&#xff08;interface&#xff09;、协作&#xff08;collaboration&#xff09;、数据类型&#xff08;data type&#xff09;等以及…
最新文章