力扣(LeetCode)2. 两数相加(C++\C)

news2024/11/16 7:26:38

模拟

模拟加法运算,设置进位数 t t t t = ( l 1 t=(l1 t=(l1-> v a l + l 2 val+l2 val+l2-> v a l + t ) % 10 val+t)\%10 val+t)%10 即为当前位上的数, t / 10 t/10 t/10 即是进位数。

设置哑结点,便于操作头结点。
模拟上述操作,最后返回哑结点的后继。

代码展示

class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        int t = 0;//进位
        ListNode *dummy = new ListNode(0);
        auto cur = dummy;
        while(l1||l2){
            if(l1) t+=l1->val,l1 = l1->next;
            if(l2) t+=l2->val,l2 = l2->next;
            cur->next = new ListNode(t%10);//当前位的数
            cur = cur->next;
            t/=10;//进位数
        }
        if(t) cur->next = new ListNode(t);
        return dummy->next;
    }
};
//同时遍历两个链表
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {
    struct ListNode* cur = (struct ListNode*)calloc(1, sizeof(struct ListNode));//声明一个链表,存储答案
    struct ListNode* dummyhead = (struct ListNode*)calloc(1, sizeof(struct ListNode));//哑结点,用于存储cur的值
    dummyhead = cur;
    int next = 0;//是否进位
    while (l1 && l2) {
        int sum = l1->val + l2->val + next;
        cur->next = (struct ListNode*)calloc(1, sizeof(struct ListNode));
        cur->next->val = sum % 10;
        if (sum >= 10) {
            next = 1;
        }
        else {
            next = 0;
        }
        cur = cur->next;
        l2 = l2->next, l1 = l1->next;//所有链表后移一位
    }
    while (l2) {//遍历结束,l2非空
        int sum = l2->val + next;
        cur->next = (struct ListNode*)calloc(1, sizeof(struct ListNode));
        cur->next->val = sum % 10;
        if (sum >= 10) {
            next = 1;
        }
        else {
            next = 0;
        }
        cur = cur->next;
        l2 = l2->next;
    }
    while (l1) {//遍历结束,l2非空
        int sum = l1->val + next;
        cur->next = (struct ListNode*)calloc(1, sizeof(struct ListNode));
        cur->next->val = sum % 10;
        if (sum >= 10) {
            next = 1;
        }
        else {
            next = 0;
        }
        cur = cur->next;
        l1 = l1->next;
    }
    if(next){
        cur->next = (struct ListNode*)calloc(1, sizeof(struct ListNode));
        cur->next->val = 1;
    }
    return dummyhead->next;
}

博主致语

理解思路很重要!
欢迎读者在评论区留言,作为日更博主,看到就会回复的。

AC

AC

复杂度分析

  1. 时间复杂度: O ( m a x ( m , n ) ) O(max(m,n)) O(max(m,n)) n n n l 1 l1 l1 的长度, m m m l 2 l2 l2 的长度,同时遍历 l 1 , l 2 l1,l2 l1,l2 , 一次遍历得到答案。
  2. 空间复杂度: O ( 1 ) O(1) O(1),除去保存答案所用空间,没有使用额外的线性空间。

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

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

相关文章

Windows11更新最新系统版本后无法播放媒体声音

故障机器Dell为例 step1:检测系统提示音是否正常,正常可观察第二步; step2:打开计算机管理-设备管理器-观察声音设备是否正常,可右键编辑重启驱动 step3:打开无法播放媒体声音的设备查看设置,Firefox为例 …

腾讯魏巍:Eunomia云原生资源编排优化

2022年11月10日,在中国信通院、腾讯云、FinOps产业标准工作组联合发起的《原动力x云原生正发声 降本增效大讲堂》系列直播活动第10讲上,腾讯Light云计算平台负责人魏巍分享了Eunomia云原生资源编排优化实践。本文整理自魏巍的分享。 云上资源优化背景 相…

为你的服务器集成 LDAP 认证

本文内容 为什么需要 LDAP 认证如何集成 LDAP 认证Nginx 篇Apache 篇Backend 篇本文小结回顾我这些年的工作经历,面向企业(2B)和面向用户(2C)的项目都曾接触过。我个人觉得,面向企业的项目更注重业务,参与决策的人数多、周期长,目的是为企业提供生产经营价值,如缩减成本、…

kotlin coroutine源码解析之suspend挂起函数原理

目录suspend挂起函数join原理Await原理Suspend函数总结suspend挂起函数 在idea中写某些协程函数的时候,会有一个绿色箭头图标的出现,如下图: 而且这些方法不放在协程里面写的话,idea编辑器还会报错,如下图&#xff1…

基于python的人力资源管理系统

摘 要 随着当今社会的发展,时代的进步,各行各业也在发生着变化,比如人力资源管理这一方面,利用网络已经逐步进入人们的生活。传统的人力资源管理,都是员工去公司查看部门信息、招聘信息,这种传统方式局限性…

第一个 Go 程序,从 Hello World 开始

1、开发编辑器 Go 采用的是UTF-8编码的文本文件存放源代码,理论上使用任何一款文本编辑器都可以做 Go 语言开发,这里推荐使用 VS Code 和 Goland。 VS Code 是微软开源的编辑器,而 Goland 是 jetbrains 出品的付费IDE。GoLand 开发工具时收…

linux 安装微擎

前言 OS: CentOS Linux release 7.6.1810 (Core)nginx1.12.2微擎 v2.7.4 环境准备 PHP 7.0MYSQL 5.7 安装mysql 5.7 参考 【Docker】 安装 mysql 安装PHP 7.0 参考 Linux 利用yum源安装php7.0nginx PHP 支持 GD2 yum install php70w-gd*安装完成后重启php PHP 支持 D…

从感知机到神经网络

一、神经网络的一个重要性质 1.1 重要性质 自动从数据中学习到合适的权重参数 1.2 称呼 共n层神经元,称之为n-1层网络 输入层中间层(隐藏层)输出层 1.3计算神经网络 节点值*权重值偏置值输出值 根据输出值的大小计算出节点值 输出值…

ICV:全球首份量子重力测量仪器市场分析报告。传统测量行业地位正被量子传感器商业化严重威胁,中国有望成为量子重力测量仪器市场最大赢家!

本报告的主要内容是对量子重力测量仪器进行市场分析,并对量子重力测量仪器科研方向、主要企业、关键应用、产业现状(科研需求、军用场景)、未来趋势等方面进行分析及预测未来的市场发展。 量子重力传感器原理为在真空环境中利用激光和磁场捕获…

11、Service访问Pod、Service IP原理、DNS访问Service、外部访问service

Pod可能因为各种原因发生故障而死掉,Deployment等Controller会通过动态创建和销毁Pod来保障应用整体的健壮性。Pod是脆弱的,但应用是健壮的。每个Pod都有自己的IP地址,当controller用新的Pod替代发生故障的Pod时,新Pod会分配到新的…

【Linux】Ubuntu、Debian下对deb包进行修改后重新打包——以MySQL安装包为例

需求 关于MySQL的lower_case_table_names参数,在Windows系统下和在Linux系统下,默认值是不同的。 Unix,Linux下默认为0,大小写敏感。创建的库表名将原样保存在磁盘上。如create database TeSt;将会创建一个TeSt的目录&#xff0…

Java项目:SSH在线水果商城平台含管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目分为前后台,分为普通用户与管理员两个角色,前台为普通用户登录,后台为管理员登录; 管理员…

webpack5 Core-js解决async 函数、promise 对象等兼容问题

为什么Core-js 过去我们使用 babel 对 js 代码进行了兼容性处理,其中使用babel/preset-env 智能预设来处理兼容性问题。 它能将 ES6 的一些语法进行编译转换,比如箭头函数、点点点运算符等。但是如果是 async 函数、promise 对象、数组的一些方法&#x…

《FFmpeg Basics》中文版-06-填充视频

正文 填充视频意味着向视频帧添加额外的区域以包含额外的内容。当输入应在具有不同宽高比的显示器上播放时, 通常需要填充视频。 填充视频基础知识 对于视频填充,我们使用表格中描述的填充过滤器。 描述在输入视频帧中添加彩色填充,该帧位…

HTML+CSS+JS大作业:商城网购网站设计——淘宝1页

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 在线商城购物 | 水果商城 | 商城系统建设 | 多平台移动商城 | H5微商城购物商城项目 | HTML期末大学生网页设计作业,Web大学生网页 HTML&a…

微信小程序获取用户头像昵称组件封装(最新版)

一、前言 微信小程序将在2022年11月08日对获取用户头像昵称信息的API再一次进行改动,这次的改动比较大。 更多详情查看公告:公告直达链接 我的项目比较多,而且大部分都是只需要获取用户的头像以及昵称,并不需要像官方的“最佳实…

袋鼠云数栈UI5.0体验升级背后的故事:可用性原则与交互升级

最近,我们袋鼠云的UED部⻔小伙伴们,不声不响地⼲了⼀件⼤事——升级了全新设计语言「数栈UI5.0」。 众所周知,用户在使用产品时,是一个动态的过程,用户和产品之间进行交互的可用性,能否让用户愉悦、快速地…

uni-app - H5 页面路由不存在时,跳转到自己定制的 404.vue 页面(当路由不存在时自动重定向到自定义的 404 组件)超详细简约高效的解决方案

前言 在 uni-app 开发 H5 移动端项目中,如果访问一个不存在的路由路径后,自定跳转重定向到自己定义的 404 页面。 本文带您从 0-1 一路复制,仅需 2 步完成 当页面 router 路由不存在,自动跳转到指定的 404 页面, 用最简单且最高效的方式完成,助您轻松完成该功能, 如下图…

【好文鉴赏】初创公司到底值不值得去?从以下几点考虑

关键词:【初创公司】【职业发展】【就业】 原文链接: https://tech.sina.cn/csj/2018-09-10/doc-ihiixyeu5565677.d.htmlhttps://www.zhihu.com/question/312725868/answer/693656577 有人说初创公司管理不成熟,未来不稳定; 有…

最小二乘法,加权最小二乘法,迭代重加权最小二乘法

文章目录一:最小二乘法(OLS)1:概述2:代数式3:矩阵式(推荐)3.1:实现代码二:加权最小二乘法(WLS)1:增加对角矩阵 W1.1&#…