首页 > 其他分享 >LC 2、两数相加

LC 2、两数相加

时间:2023-07-28 13:57:12浏览次数:40  
标签:tmp ListNode LC 相加 next 链表 l2 l1

LC 2、两数相加

这是LeetCode 上的 2、两数相加,难度为中等。

	给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
	请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

示例:

输入:l1 = [2,4,3], l2 = [5,6,4]

输出:[7,0,8]

解释:342 + 465 = 807.
输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]

输出:[8,9,9,9,0,0,0,1]

提示:

  • 每个链表中的节点数在范围 [1,100] 内
  • 0<=Node, val <=9
  • 题目数据保证列表表示的数字不含前导零

朴素解法

我们模拟人工竖式做加法的过程:

从最低位至最高位,逐位相加,如果和大于10,则进位,如果最高位有仅为,则补1.

做有关链表的题目,有个常用技巧 添加一个虚拟头结点(哨兵)帮助简化边界情况的判断。

class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        ListNode* dummy = new ListNode(0); // 哨兵
        ListNode* tmp = dummy;
        int t = 0;  //进位
        while(l1 || l2){
            int a = l1 ? l1->val : 0; // 判断如果当前结点为空,直接补0
            int b = l2 ? l2->val : 0;
            t = t + a + b;
            tmp->next = new ListNode(t % 10);
            t /= 10;
            if(l1) l1 = l1->next;
            if(l2) l2 = l2->next;
            tmp = tmp->next;
        }
        if(t > 0) tmp->next = new ListNode(1);
        return dummy->next;
    }
};
  • 时间复杂度:m和n分别代表两条链表的长度,则遍历到的最远位置为max(m, n),复杂度为O(max(m, n))
  • 空间复杂度:创建了max(m, n) + 1个结点(含哨兵),复杂度为O(max(m, n))(忽略常数)

Label: 模拟,数学,递归,链表

标签:tmp,ListNode,LC,相加,next,链表,l2,l1
From: https://www.cnblogs.com/superJade/p/17587383.html

相关文章

  • LC 1、两数之和
    LC1、两数之和题目描述这是LeetCode上的1、两数之和,难度为简单。 给定一个整数数组nums和一个整数目标值target,请你在该数组中找出「和为目标值」的那「两个」整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出......
  • 医学案例|配对wilcoxon符号秩检验
    一、案例介绍某单位想要研究某保健品对小鼠是否具有抗疲劳作用,将同种属的小鼠按性别与年龄相同、体重相近配成对子,共14对,并将每对中的两只小鼠随机分配到两个不同的保健食品剂量组,测量小鼠负重5%体重时的游泳时间(min),试比较不同剂量组的小鼠负重游泳时间有无差别。二、问题分析想......
  • linux内存日志 | journalctl指令
    摘要一、linux内存日志就是有些日志仅仅在系统允许过程中写在内存当中,但是并不会保存到硬盘当中重启后,内存日志就会情况二、指令指令功能说明选项journalctl查看全部journalctl-n3查看最新3条journalctl--since19:00--until19:10:10查看起始......
  • halcon01_halcon 联合C#导出
    01,halcon导出C#分为两种,一是导出C#语言,主要在action中进行封装二是,导出库工程,在导出库工程前,先保存halcon文件然后在导出库工程,将res_OUTTEST1文件夹拷贝在Debug文件夹下 ......
  • plsql develop 单步调试oralce存储过程
    单步调试是排查程序中逻辑错误的最直接的途径,sqlserver中调试非常方便,即F11即可进入调试模式。而oralce中的调试就需要进行一点点设置,这里记录一下plsqldevelop单步调试的方法:首先,要有调试权限否则报:调试报错,提示ORA-01031:insufficientprivileges,则说明当前用户权限不......
  • Profinet转EtherNet/IP网关连接AB PLC的应用案例
    西门子S7-1500PLC(profinet)与ABPLC以太网通讯(EtherNet/IP)。本文主要介绍捷米特JM-EIP-PN的Profinet转EtherNet/IP网关,连接西门子S7-1500PLC与ABPLC 通讯的配置过程,供大家参考。1, 新建工程:运行 RSLogix5000 程序,选择菜单 File->New,弹出对话框:  2, 在“Type”中选......
  • journalctl
    journalctl检索systemd日志,是CentOS7才有的工具。语法journalctl[OPTIONS...][MATCHES...]选项Flags:--system#显示系统日志--user#显示当前用户的用户日志-M--machine=CONTAINER#在本地容器上操作-S--since=DATE......
  • EtherNet/IP转 Modbus网关实现AB PLC控制变频器案例
    捷米特JM-EIP-RTU网关Modbus转ETHERNET/IP用于将多个变频器连接到Ethernet/Ip主网,以便森兰变频器可以由ABPLC控制。 配备专用于JM-EIP-RTU网关的EDS文件,ABPLC主站可以控制森兰逆变器从站。使用 AB 系统的配置方法1,运行 RSLogix5000 程序加载捷米特JM-EIP-RTU的EDS ......
  • 关于伺服刹车/急停/前后设备信号对接/PLC输入输出模块的公共端介绍
    一、伺服刹车关键词:急停,急停中间继电器、刹车中间继电器,刹车使能正文:通常情况不用硬件为主导而用程序来主导控制,多场景应用方便修改且安全可靠。伺服刹车硬件,一般是24v电源给进去,就会释放刹车使能。拿一个Z轴伺服作为对象。1.程序上控制逻辑如下急停按钮一般都是NC触点串联......
  • 2167 - 树的公共祖先(LCA)
    题目描述给定一棵树和两个不同的结点,求出他们最近的公共祖先父结点。已知该树有n个结点,标号1..n。输入第1行输入一个整数nn,代表结点数量(n≤100)第2行输入两个整数x,yx,y,表示需要计算的结点;以下n−1行,每行两个整数a和b,表示a的父结点是b。输出输......