LeetCode·每日一题·445. 两数相加 II·模拟

news2024/12/23 18:27:25

作者:小迅
链接:https://leetcode.cn/problems/add-two-numbers-ii/solutions/2328613/mo-ni-zhu-shi-chao-ji-xiang-xi-by-xun-ge-67qx/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

题目

 

示例

 

思路

题意 -> 给定两个链表,数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加返回一个新的链表。

最简单直接的方法是将两个链表反转,反转后从链表头开始枚举并进行累和,使用新链表保存其值,最后返回新链表头节点即可。注意新链表应该使用尾插法。

对于链表也可以转换为数组进行处理,枚举链表的每一个元素,将其等价存入数组中,因此题意 -> 两数之和,只不过高位在前,因此在枚举求和过程中,应该从尾到头枚举,最后返回新链表即可

代码注释超级详细

代码


/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */


struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2){
    int arr1[100] = {0}, arr2[100] = {0};
    int index1 = 0, index2 = 0;
    while (l1) {//l1转换为数组
        arr1[index1++] = l1->val;
        l1 = l1->next;
    }
    while (l2) {//l2转换为数组
        arr2[index2++] = l2->val;
        l2 = l2->next;
    }
    int arr3[101] = {0};//记录累和
    int index3 = 0;
    int c = 0;
    for (index3; index3 < 101; index3++) {//枚举数组求和
        if (index1 > 0 && index2 > 0) { //l1,l2都有元素
            arr3[index3] = (arr1[--index1] + arr2[--index2] + c) % 10;
            c = (arr1[index1] + arr2[index2] + c) / 10;
        } else if (index1 > 0) {// l1有元素
            arr3[index3] = (arr1[--index1] + c) % 10;
            c = (arr1[index1] + c) / 10;
        } else if (index2 > 0) {// l2有元素
            arr3[index3] = (arr2[--index2] + c) % 10;
            c = (arr2[index2] + c) / 10;
        } else if (c){// 进位还有元素
            arr3[index3] = c;
            c = 0;
        } else {//都没元素了
            break;
        }
    }
    struct ListNode *haed = (struct ListNode *)malloc(sizeof(struct ListNode));
    haed->next = NULL;
    struct ListNode *next = haed;
    while (index3 > 0) {//数组转换为链表,这里可以和上面合并在一起
        struct ListNode *node = (struct ListNode *)malloc(sizeof(struct ListNode));
        node->next = NULL;
        node->val = arr3[--index3];
        next->next = node;
        next = node;
    }
    return haed->next;
}

作者:小迅
链接:https://leetcode.cn/problems/add-two-numbers-ii/solutions/2328613/mo-ni-zhu-shi-chao-ji-xiang-xi-by-xun-ge-67qx/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

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

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

相关文章

2023.6.26-7.2 AI行业周刊(第152期):从一个热门视频,得到的人生发展感悟

上周五去上海参加2023年MWC&#xff08;世界移动通讯大会&#xff09;&#xff0c;在回无锡的路上&#xff0c;无意中刷到一个已关注博主的视频。 这个博主是2021年的时候&#xff0c;刚发第二个视频的时候&#xff0c;就一直在关注的。 从分享他从公务员辞职的经历&#xff…

【Web3】认识Web3

Web3是一种用于描述下一代互联网的概念 它指在构建一个去中心化 用户控制和加密安全的网络环境。 Web3的目标是将权利和数据掌握回归到用户手中 通过采用分布式技术和加密货币的支持 实现更加开放 公开和透明的互联网 Web的主要特点 去中化&#xff1a;Web3的核销理念是去中心…

静态时序分析: update io latency

往期文章链接: 静态时序分析: 虚拟时钟与I/O延迟约束 静态时序分析: 时钟延时(clock latency) 在CTS之前,clock是ideal的,in2reg与reg2out的path由于reg的clock network delay为0,所以时序比较容易收敛,在CTS之后,由于reg的clock network delay有了真实值(propagated…

Spring Boot 中的滚动部署是什么,如何使用

Spring Boot 中的滚动部署是什么&#xff0c;如何使用 简介 在开发和部署应用程序时&#xff0c;我们希望最小化中断&#xff0c;以确保应用程序始终可用。滚动部署是一种部署应用程序的方法&#xff0c;可以逐步将新版本部署到生产环境中&#xff0c;同时保持应用程序的可用…

Linux 6.5增加对高通开源GPU Adreno 690的支持

导读即将推出的Linux 6.5内核将把对高通Adreno 690 GPU的支持添加到开源的MSM内核图形/显示驱动程序中。A690主要用于骁龙8cx第三代&#xff08;SC8280XP&#xff09;平台&#xff0c;而联想ThinkPad X13s笔记本电脑和其他硬件也采用了该平台。 新的支持将包含近200行代码&…

基于小程序+云开发制作一个文件传输助手小程序

微信文件传输助手是真人?基于云开发制作一个文件传输助手小程序,你发给ta的小秘密,只有你自己知道。 开发步骤一、创建小程序二、云开发配置环境配置绑定云环境三、页面设计首页详情页底部弹窗四、云数据库概念云函数服务端函数文件上传

Java版事件与委托实现自动创建工厂并热加载

本文已收录于专栏 《Java》 目录 概念说明事件与委托工厂方法热加载 需求介绍代码实现1.整体结构2.工厂方法中已经存在的类工厂接口运算类工厂(其他工厂基本上是一样的)&#xff1a;目前没有加法类的工厂我们后面会添加加法类工厂然后热加载运行运算父类运算子类 3.工厂方法之外…

Java 运行jar包变更配置文件与变量

文章目录 前言实现原理不同环境的配置文件变更配置变量 前言 为实现快速搭建和开发&#xff0c;项目以Springboot框架搭建&#xff0c;springboot搭建的项目可以将项目直接打成jar包并运行&#xff0c;无需自己安装配置Tomcat或者其他服务器&#xff0c;是一种方便快捷的部署方…

PDF怎么转换成Excel?两个实用的方法给你!

如何将PDF文件转换成Excel表格的格式呢&#xff1f;在日常办公中&#xff0c;我们经常会遇到需要将PDF文件转换成Excel表格的情况。由于PDF文件具有稳定的格式特征&#xff0c;很多时候我们下载或接收到的文件都是以PDF格式呈现。那么&#xff0c;当我们需要使用Excel表格格式时…

数据结构--字符串的KMP算法

数据结构–字符串的KMP算法 朴素模式匹配算法&#xff1a; 一旦发现当前这个子串中某个字符不匹配&#xff0c;就只能转而匹配下一个子串(从头开始) 但我们可以知道&#xff1a; 不匹配的字符之前&#xff0c;一定是和模式串一致的 \color{red}不匹配的字符之前&#xff0c;一…

C++中内存拷贝函数memcpy函数使用

函数原型&#xff1a;void *memcpy(void *dest, const void *src, size_t n); 头文件&#xff1a;#include<string.h> 功能&#xff1a; 从源 src 所指的内存地址的起始位置开始拷贝 n 个字节到目标 dest 所指的 内存地址的起始位置中&#xff08;将一个 内存块 的内容…

哪种类型耳机不伤耳朵,分享几款佩戴无需入耳的骨传导耳机

骨传导耳机是目前在运动领域最火热的产品&#xff0c;也是最适合运动的耳机&#xff0c;它的原理是通过颅骨将声音转化为神经冲动&#xff0c;通过内耳传至听觉中枢&#xff0c;因此不会对耳朵造成任何损伤&#xff0c;它同时也可以让耳朵更好地听到周围的声音。能够很好的提高…

100天精通Golang(基础入门篇)——第12天:深入解析Go语言中的集合(Map)及常用函数应用

&#x1f337; 博主 libin9iOak带您 Go to Golang Language.✨ &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &#x1f30a; 《I…

Linux0.11内核源码解析-char_dev.c

目录 概述 串口终端设备 控制台终端 内存 调用接口 概述 char_dev.c文件包括字符设备文件访问函数&#xff0c;主要是有rw_ttyx(),rw_tty(),rw_memory()和rw_char()函数&#xff0c;另外还有一个设备读写函数指针表 串口终端设备 rw_ttyx()是串口终端设备读写函数&#x…

Process Explorer高级使用

工具描述 Process Explorer使用个轻量级的进程管理器&#xff0c;是由Sysinternals出品的免费工具&#xff0c;请猛击这里下载最新版本使用。 以下是官方介绍的翻译&#xff1a; “想知道是那个程序打开了某个文件或者目录么&#xff1f;现在可以找出它了。PorcessExplorer将…

三、pycharm开发PyQt6 开发环境一键生成

一、环境 windows 10Pycharm 社区版 - PyCharm 2022.1.3 二、设置模板 1、打开模板 File -> Settings… (ctrl alt s) -> Editor -> File and Code Templates 2、创建模板 1&#xff09;点击 Files 2&#xff09;点击 3、填写第一个脚本文件 Name : My PyQt…

ReentrantLock源码解析 | 京东云技术团队

并发指同一时间内进行了多个线程。并发问题是多个线程对同一资源进行操作时产生的问题。通过加锁可以解决并发问题&#xff0c;ReentrantLock是锁的一种。 1 ReentrantLock 1.1 定义 ReentrantLock是Lock接口的实现类&#xff0c;可以手动的对某一段进行加锁。ReentrantLock…

hadoop高校固定资产管理系统-计算机毕设 附源码74965

hadoop高校固定资产管理系统 摘 要 在信息飞速发展的今天&#xff0c;网络已成为人们重要的信息交流平台。高校部门每天都有大量的信息需要通过网络发布&#xff0c;为此&#xff0c;高校固定资产管理系统开发的必然性&#xff0c;所以本人开发了一个基于Tomcat&#xff08;服务…

SpringBoot整合Schedule详解和优化实战

文章目录 前言为什么选择Spring ScheduleCron表达式简单示例测试结果优化方案 前言 Spring Schedule是Spring框架提供的一种简单的定时任务解决方案。它是基于Java的Scheduled注解&#xff0c;可以让我们在不影响主线程的情况下&#xff0c;定时、周期性地执行任务。 为什么选…

vue+ant design vue实现搜索区域form

1.要实现的效果&#xff1a; form部分form-item自动铺开&#xff0c;间距适当&#xff0c;屏幕大小不同能根据屏幕大小变化。 2.vue组件中的代码示例 重点html代码&#xff1a; <!-- 搜索区域 --><div class"table-page-search-wrapper"><a-form la…