LeetCode刷题之HOT100之两数相加

news2024/11/15 22:52:48

2024/5/27 大家早上好呀,昨晚没睡好,四个小时不到,估计是太兴奋了。昨天去长乐十七孔、下沙赶海啦。远看沙滩上的人群就像一根根木桩矗立在浅滩上,走近些,才发现都佝偻着腰,两只手在沙地淘金(摸花蛤)。放几张图

在这里插入图片描述

图一、十七孔水库附近

在这里插入图片描述

图二、十七孔——右侧礁石是妈祖像

在这里插入图片描述

图三、追风筝的人——为你千千万万遍

在这里插入图片描述

图四、新能源花蛤捕捉器

在这里插入图片描述

图五、黄昏落日

准备做题的,我突然想到还有一张雨后彩虹

在这里插入图片描述

图六、雨后彩虹

图片只能是图片,是某个夜晚翻开相册的回忆。只有亲身体会,站在铺满黑绿青苔,镶嵌贝类的礁石上,带有咸腥的狂烈海风扑在身上,一阵一阵的浪花扑打过来,那一刻是自由的。做题

1、题目描述

在这里插入图片描述

2、逻辑分析

题目是两数相加,数字的表示使用了链表的线性结构,且使用逆序方式存储。我的大致思路:两个链表同时遍历,相加,逢十进位。看看题解怎么说。官方题解给出的解法跟我想的差不多,但是我想的不够具体。

进位部分:取一个变量来表示进位,每次相加的和表示为:sum = (n1 + n2 + jinWei)% 10。这样如果相加结果小于10,则不会有变化。大于等于10,那么就需要进位。具体还是看代码更清晰一些:

3、代码演示

 public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        // 初始化头节点和尾节点,开始时都为null  
        ListNode head = null, tail = null;
        // 进位,初始化为0  
        int jinWei = 0;
        // 当两个链表中的任一链表不为空时,继续循环 
        while(l1 != null || l2 != null){
            // 获取l1的当前节点的值,如果l1为空,则取0
            int n1 = l1 != null? l1.val: 0;
            // 获取l2的当前节点的值,如果l2为空,则取0
            int n2 = l2 != null? l2.val: 0;
            // 计算当前两个节点值的和加上进位
            int sum = n1 + n2 + jinWei;
            // 如果头节点为空(即刚开始创建第一个节点时)
            if(head == null){
                // 创建新节点,值为sum的个位数,并将头节点和尾节点都指向它 
                head = tail = new ListNode(sum % 10);
            }else{
                // 否则,创建新节点,并将它连接到尾节点的后面 
                tail.next = new ListNode(sum % 10);
                // 更新尾节点为新的尾节点  
                tail = tail.next;
            }
            // 更新进位为sum的十位数
            jinWei = sum / 10;
            // 如果l1不为空,则移动到l1的下一个节点 
            if(l1 != null){
                l1 = l1.next;
            }
            // 如果l2不为空,则移动到l2的下一个节点
            if(l2 != null){
                l2 = l2.next;
            }
        }
        // 如果最后还有进位(即两个链表的最高位相加后有进位)
        if(jinWei > 0 ){
            // 创建一个新节点表示进位,并将其连接到尾节点的后面
            tail.next = new ListNode(jinWei);
        }
        // 返回头节点,即新的链表的开始位置  
        return head;
    }

根据代码,我们用一个实际例子来论证:

在这里插入图片描述

时间复杂度:O(max(m,n)),空间复杂度;O(1)。

太困了,眯了一会醒来再做的,写blog挺费事费力的,但是会让思路更清晰,加油!

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

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

相关文章

Oracle实践|内置函数之聚合函数

📫 作者简介:「六月暴雪飞梨花」,专注于研究Java,就职于科技型公司后端工程师 🏆 近期荣誉:华为云云享专家、阿里云专家博主、腾讯云优秀创作者、ACDU成员 🔥 三连支持:欢迎 ❤️关注…

如何深入理解、应用及扩展 Twemproxy?no.15

Twemproxy 架构及应用 Twemproxy 是 Twitter 的一个开源架构,它是一个分片资源访问的代理组件。如下图所示,它可以封装资源池的分布及 hash 规则,解决后端部分节点异常后的探测和重连问题,让 client 访问尽可能简单,同…

2024年上半年信息系统项目管理师下午真题及答案(第一批)

试题一 某项目包含ABCDEFGH共8个活动,各活动的历时、活动逻辑关系如下表所示: 单击下面头像图片领取更多软考独家资料

YOLOv10真正实时端到端目标检测(原理介绍+代码详见+结构框图)| YOLOv10如何训练自己的数据集(NEU-DET为案列)

💡💡💡本文主要内容:真正实时端到端目标检测(原理介绍代码详见结构框图)| YOLOv10如何训练自己的数据集(NEU-DET为案列) 博主简介 AI小怪兽,YOLO骨灰级玩家,1&#xff0…

[自动驾驶技术]-8 Tesla自动驾驶方案之硬件(AI Day 2022)

特斯拉在AI Day 2022先介绍了AI编译器,后面又介绍了Dojo的硬件软件,软件部分和AI编译器有部分重叠,本文介绍还是延用AI Day的思路,分为三部分:AI编译和推理,Dojo硬件,Dojo软件。 特斯拉车道检测…

[码蹄集新手训练营]MT1016-MT1020

目录 题号MT1016 宽度与对齐MT1017 左右对齐MT1018 输入宽度MT1020 %s格式符 题号 MT1016 宽度与对齐 #include<stdio.h> int main() { printf("%-5d %5d\n%-5d %5d\n%-5d %5d",455,455,-123,-123,987654,987654);return 0; }MT1017 左右对齐 #include<s…

el-switch自动触发更新事件

比如有这样一个列表&#xff0c;允许修改单条数据的状态。希望在更改el-switch状态时能够有个弹框做二次确认&#xff0c;没问题&#xff0c;el-switch已经帮我们想到了&#xff0c;所以它提供了beforeChange&#xff0c;根据beforeChange的结果来决定是否修改状态。一般确认修…

做抖音电商,可以没有货源和经验,但不能没有耐心

我是王路飞。 在抖音做电商这件事&#xff0c;不需要怀疑其可行性。 经过四五年的发展&#xff0c;平台和商家已经证明了抖音电商的前景&#xff0c;它就是我们普通人做抖音最适合的一个渠道。 想在抖音做电商的&#xff0c;再给你们一个经验之谈&#xff0c;你可以没有货源…

QT 掩码 InputMask

字符规则 如IP输入框可以简单设置为 IP->setInputMask("000.000.000.000");就会有80%的相似度 另外设置掩码用 ui.edtIP->setInputMask(“这里面是字符格式”); ★消除已有的掩码用 ui.edtIP->setInputMask(" "); 而不是ui.…

QTextEdit将多个字符作为一个整体,不可单独修改

考虑一个问题&#xff0c;QTextEdit如何实现类似微信和QQ聊天输入框中的“xxx”效果&#xff0c;其内容作为一个整体&#xff0c;以突出颜色显示&#xff0c;并且不可以单独编辑修改&#xff0c;只能整体删除修改。 突出颜色显示有很多方式可以实现&#xff0c;例如 通过setT…

echarts- 热力图, k线图,雷达图

热力图 热力图可以看成是一种矩形的散点图。 热力图的矩形受itemStyle的影响。 通常配合visualmap组件来根据值的大小做颜色的变化。 热力图主要通过颜色去表现数值的大小&#xff0c;必须要配合 visualMap 组件使用。 visualMap:视觉映射组件 let options {tooltip: {},xAx…

【全开源】景区手绘地图导览系统源码(ThinkPHP+FastAdmin)

一款基于ThinkPHPFastAdmin开发多地图手绘地图导览系统(仅支持H5)&#xff0c;景区升4A5A必备系统&#xff0c;高级版支持全景。 ​打造个性化游览新体验 一、引言&#xff1a;景区导览系统的革新 在旅游业蓬勃发展的今天&#xff0c;景区导览系统成为了提升游客体验的关键。…

如何获取某个城市或区域的人口分布数据?

人口分布数据在多个领域都扮演着至关重要的角色。这些数据不仅反映了一个国家或地区的人口分布状况&#xff0c;而且为政策制定者、企业决策者和研究者提供了宝贵的信息。那么&#xff0c;我们如何获取这些重要的人口分布数据呢&#xff1f; 政府统计部门是最主要的来源。各国政…

MybatisPlusGenerator交互式Web生成增删改查、导出导入代码

个人博客&#xff1a;无奈何杨&#xff08;wnhyang&#xff09; 个人语雀&#xff1a;wnhyang 共享语雀&#xff1a;在线知识共享 Github&#xff1a;wnhyang - Overview 简介 前有文章MybatisPlus-Generator自定义模版生成CRUD、DTO、VO、Convert等介绍如何使用MybatisPlu…

翻译《The Old New Thing》- Why are INI files deprecated in favor of the registry?

Why are INI files deprecated in favor of the registry? - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20071126-00/?p24383 Raymond Chen 2007年11月26日 为什么弃用 INI 文件而改用注册表&#xff1f; 欢迎&#xff0c;Slashdot的读…

JVM学习-垃圾回收器(一)

垃圾回收器 按线程数分类 串行垃圾回收器 串行回收是在同一时间段内只允许有一个CPU用于执行垃圾回收操作&#xff0c;此时工作线程被暂停&#xff0c;直至垃圾收集工作结束 在诸如单CPU处理器或者较小的应用内存等硬件平台不是特别优越的场合&#xff0c;串行回收器的性能表…

html5+css3+js学习记录(1)-- html

1 vscode前端插件 1.1 Web标准 2 文档声明与字符编码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewpor…

一文教你如何调用Ascend C算子

Ascend C是CANN针对算子开发场景推出的编程语言&#xff0c;原生支持C和C标准规范&#xff0c;兼具开发效率和运行性能。基于Ascend C编写的算子程序&#xff0c;通过编译器编译和运行时调度&#xff0c;运行在昇腾AI处理器上。使用Ascend C&#xff0c;开发者可以基于昇腾AI硬…

【全开源】排队叫号系统源码(FastAdmin+GatewayWorker)

一款基于FastAdminGatewayWorker开发的多项目多场景排队叫号系统&#xff0c;支持大屏幕投屏&#xff0c;语音播报叫号&#xff0c;可用于餐厅排队取餐、美甲店排队取号、排队领取、排队就诊、排队办理业务等诸多场景&#xff0c;助你轻松应对各种排队取号叫号场景。 ​打造高…

Java中的JSON神器,如何轻松玩转复杂数据结构

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 一、揭秘JSON世界的基石 在Java的世界中&#xff0c;JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;它基于文本&#xff0c;易于阅读和编写&#xff0c;同时也易于…