LeetCode 445.两数相加 II

news2024/9/22 23:17:59

给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。
你可以假设除了数字 0 之外,这两个数字都不会以零开头。

https://leetcode.cn/problems/add-two-numbers-ii/description/

class Solution {
        public ListNode reversal(ListNode head) {
        ListNode newHead = null;
        ListNode cur = head;
        while (cur != null) {
            ListNode next = cur.next;
            cur.next = newHead;
            newHead = cur;
            cur = next;
        }
        return newHead;
    }
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode ans = new ListNode();
        ListNode head = new ListNode();
        head = ans;
        ListNode rev_l1 = reversal(l1);
        ListNode rev_l2 = reversal(l2);
        int sum = 0;
        int carry = 0;
        while (rev_l1 != null || rev_l2 != null || carry != 0) {
            if (rev_l1 != null) {
                sum = sum + rev_l1.val;
            }
            if (rev_l2 != null) {
                sum = sum + rev_l2.val;
            }
            ListNode cur = new ListNode();
            if (sum + carry >= 10) {
                cur.val = (sum + carry) - 10;
                carry = 1;
                sum = 0;
            } else {
                cur.val = sum + carry;
                carry = 0;
                sum = 0;
            }
            ans.next = cur;
            ans = ans.next;
            if (rev_l1 != null) {
                rev_l1 = rev_l1.next;
            }
            if (rev_l2 != null) {
                rev_l2 = rev_l2.next;
            }
        }
        return reversal(head.next);
    }
}

image.png

解题思路:

首先将两个链表进行反转,这边使用的是头插法,反转后,那么链表的第一个元素就是以个位开始,两个链表就可以直接相加了,如果不反转的话,还要考虑每一位是十位还是百位等等,然后遍历两个链表,从个位开始相加,因为只有两个链表,所以每次相加的进位要么为0,要么为1,不需要担心进位后还需要在进位的情况,通过两个变量sum和array代表相加和和是否进位的标志,然后将每次的计算结果放入到新链表中即可,最后在对结果链表进行反转。

更多LeetCode刷题:https://github.com/xu-zhi-heng/LeetCode_Question

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

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

相关文章

Elasticsearch全⽂检索

以下说明&#xff1a;其中比喻都是以mysql为模板进行比较说明 一.lucene 1.jar包环境准备 <!-- 引入Lucene核心包及分词器包 --><dependency><groupId>org.apache.lucene</groupId><artifactId>lucene-core</artifactId><version>…

82、基于stm32单片机音乐喷泉设计播放器频谱彩灯系统设计(程序+原理图+参考论文+开题报告+任务书+设计资料+元器件清单等)

摘 要 随着人们生活水平的提高和建立绿色城市的向往&#xff0c;音乐喷泉以其独特的魅力和特殊的功能&#xff0c;愈来愈成为休闲娱乐产业中的一项重要产品,音乐喷泉的兴建也越来越多。 根据目前音乐喷泉的发展现状&#xff0c;介绍了一个以STM32单片机为核心的小型音乐喷泉控…

Fiddler过滤器 Filters 详解

目录 前言&#xff1a; 一、 Hosts 过滤 &#xff08;较常用&#xff09; 二、Client Process 过滤&#xff08;客户端进程过滤&#xff0c;通过配置只过滤/不过滤哪些进程的请求。用的不多&#xff09; 三、Request Headers &#xff08;根据请求头信息进行过滤。常用&…

wireshark抓包工具实战

目录 参考一、关于Wireshark二、下载及安装三、基本概念每层类型Ethernet以太网层&#xff08;MAC地址&#xff09;协议目的地址 Internet网络层协议报文 Transmission传输层协议 三、tcp抓包三次握手连接四次握手断开http协议请求协议包应答协议包文件类型 参考 网络抓包工具…

Docker容器技术 详解!!!

目录 一、概述 &#xff08;一&#xff09;docker介绍 &#xff08;二&#xff09;为什么使用Docker &#xff08;三&#xff09;docker优势 1、运行环境的一致性&#xff1a; 2、更快速地启动部署&#xff1a; 3、更好的隔离性&#xff1a; 4、弹性伸缩、快速扩展&…

FreeRTOS_任务切换

目录 1. RendSV 异常 2. FreeRTOS 任务切换场合 2.1 执行系统调用 2.2 系统滴答定时器&#xff08;SysTick&#xff09;中断 3. PendSV 中断服务函数 4. 查找下一个要运行的任务 4.1 通用方法 4.2 硬件方法 5. FreeRTOS 的时间片调度 6. 时间片调度实验 6.1 实验程序…

Pushgetway安装和使用

1、Pushgetway安装和使用 1.1 Pushgateway是什么 pushgateway 是另一种数据采集的方式&#xff0c;采用被动推送来获取监控数据的prometheus插件&#xff0c;它可以单独运行在 任何节点上&#xff0c;并不一定要运行在被监控的客户端。 首先通过用户自定义编写的脚本把需要监…

ClickHouse浅谈

文章目录 前置知识什么是OLAP与OLTP行式数据库与列式数据库什么是行式和列式&#xff1f;行式和列式的优缺点 ClickHouse什么是clickhouse&#xff1f;clickhouse的使用架构clickhouse的优点和缺点clickhouse的功能特性计算层服务层向量化引擎 clickhouse的使用案例与其他OLAP相…

如何打开远程电脑的任务管理器?

关于任务管理器 任务管理器可以显示远程计算机后台运行的进程和应用程序及其使用状态。通过任务管理器提供的信息&#xff0c;您可以了解是否有程序或进程占用过多的CPU和内存&#xff0c;然后您可以选择结束应用程序或结束进程以提高远程电脑的运行速度。 如何访问远程电脑上…

SD 系统自动计算的税额 有差异

SD 系统自动计算的税额 有差异 1,002,000.00 * 13% 115,274.34 产生了0.03的价格舍入差异 &#xff08;保存前是正确的&#xff0c;保存后产生差异&#xff09; 解决办法&#xff1a;取消条件类型组条件即可

辅助行走机器人开发 —— 下位机控制

文章目录 总体设计硬件选型控制模式程序流程1 初始化2 FreeRTOSBalance_taskMPU6050_taskShow_taskLed_taskPs2_taskData_task 3 中断串口中断 辅助行走机器人开发项目总结 总体设计 项目分为语音模式、导航模式和手动模式。 语音模式、导航模式为ROS下发控制指令&#xff1…

java.lang.UnsupportedOperationException 异常处理

通过 json 字符串转化成的 asList &#xff0c;对该 List 进行 add 时&#xff0c;抛出异常 java.lang.UnsupportedOperationException 处理方案 List string new ArrayList<>(asList);

企业邮箱的多重用途:了解企业邮箱在工作中的重要作用

邮箱已经成为商务交流不可或缺的一部分。在企业界&#xff0c;邮箱被用于各种各样的任务&#xff0c;从内部沟通到客户服务。虽然许多组织已经转向更现代的通信方式&#xff0c;如即时消息&#xff0c;企业邮箱仍然是任何成功的商业运作的重要组成部分。以下是公司邮箱的一些主…

【小程序上传报错】message:Error: 系统错误,错误码:80058,desc of scope.userLocation is empty

根据错误信息 “Error: 系统错误&#xff0c;错误码&#xff1a;80058,desc of scope.userLocation is empty”&#xff0c;这是一个系统错误&#xff0c;错误码为80058。错误信息中提到了 scope.userLocation 的描述为空。 可能是因为在小程序中使用了 scope.userLocation 权…

5.4 服务器编程基本框架和两种高效的事件处理模式

5.4 服务器编程基本框架和两种高效的事件处理模式 服务器编程基本框架 虽然服务器种类繁多&#xff0c;但其基本框架都一样&#xff0c;不同之处在于逻辑处理&#xff08;比如开发Web服务器项目&#xff0c;浏览器客户端向服务端发送http请求&#xff0c;服务器对请求报文进行…

高压线路零序电流方向保护程序逻辑原理(三)

四、零序保护故障处理程序原理 零序保护逻辑程序可分为三个模块&#xff1a;快速动作部分、全相循环和非全相循环模块。这是根据零序保护的特点而设计的。任何一种高压线路保护都要求快速处理I段范围内的严重故障&#xff0c;所以零序保护与距离保护一样配有快速动作部分程序模…

分不清楚蝴蝶的种类,让AI来告诉你,基于YOLOv5开发构建轻量级蝴蝶细粒度目标检测识别系统

小时候有时间就很喜欢趁着下课放学的时间去抓蝴蝶玩&#xff0c;五彩多样的蝴蝶让人应接不暇&#xff0c;现在早就过了那个天真玩耍的年纪了&#xff0c;如今看到蝴蝶的第一反应就是这是什么蝴蝶&#xff0c;没有专业的知识支撑很难识别出来具体的种类&#xff0c;本文的主要目…

电脑bios使用的uefi启动,系统盘使用的mbr格式,为什么安装完系统无法进入?

概要 在电脑的安装系统过程中&#xff0c;我们会遇到一些问题&#xff0c;比如说使用UEFI启动但是磁盘分区使用MBR格式&#xff0c;导致系统安装完成之后无法引导。这是因为UEFI启动只支持GPT格式的磁盘分区。 在本文中&#xff0c;我们将探讨如何将磁盘转换成GPT格式&#xf…

一种新的程序在线升级的实现(学习)

介绍一种新的程序在线升级方法&#xff0c;以及程序在线升级在嵌入式系统中的应用和实现。设计将从系统原理和实现介绍该程序在线升级方法。利用串口作为通讯方式&#xff0c;自定义通讯协议。 上位机将升级文件传给下位机&#xff0c;下位机将数据解析后存储在内部Flash中。解…

用矩阵处理3D变换

Rotation 也可以把三个旋转矩阵合并为一个综合旋转矩阵: 平移和旋转结合 有时我们想要将平移和旋转结合起来&#xff0c;这样我们就可以在一次操作中同时进行两者&#xff0c;但是我们不能用3x3矩阵来做3D平移&#xff0c;只能用4x4矩阵来做&#xff0c;如下所定义&#xff1a…