【C++LeetCode】【热题100】两数相加【中等】-不同效率的题解【1】

news2024/10/5 13:40:18

题目:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

暴力方法:
在这里插入图片描述

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        ListNode* l=new ListNode();//结果
        ListNode* trace=l;
        int addMod=0;
        while(l1 && l2){//同时有值条件
            int tempSumValue=l1->val+l2->val+addMod;//直接相加
            int tempVal=tempSumValue%10;
            ListNode* l3=new ListNode(tempVal);
            trace->next=l3;
            trace=trace->next;

            addMod=tempSumValue/10;//进位
            l1=l1->next;
            l2=l2->next;
            
        }
        while(l1 || l2){//其中有一个有值条件
        int tempSumValue;
        if(l1){
            tempSumValue=l1->val+addMod;//进位相加
            l1=l1->next;
        }
        else{
            tempSumValue=l2->val+addMod;//进位直接相加
            l2=l2->next;
        }
            
        int tempVal=tempSumValue%10;
        ListNode* l3=new ListNode(tempVal);
        trace->next=l3;
        trace=trace->next;

        addMod=tempSumValue/10;//进位
            
        }
        if(addMod==1){//多出最长的一位数
            ListNode* l3=new ListNode(1);
            trace->next=l3;
        }
        trace=l->next;
        delete l1,l2;
        return trace;
    }
};

优化方法:
在这里插入图片描述

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        ListNode* l=new ListNode();//结果
        ListNode* trace=l;
        int addMod=0;
        while(l1 || l2){//至少有一个有值条件
        int tempSumValue;
        if(l1 && l2){
            tempSumValue=l1->val+l2->val+addMod;//进位相加
            trace->next=l1;
            l1=l1->next;
            l2=l2->next;
        }
        else if(l1){
            tempSumValue=l1->val+addMod;//进位相加
            trace->next=l1;
            l1=l1->next;
        }
        else{
            trace->next=l2;
            tempSumValue=l2->val+addMod;//进位直接相加
            l2=l2->next;
        }
            
        int tempVal=tempSumValue%10;
        trace=trace->next;
        trace->val=tempVal;

        addMod=tempSumValue/10;//进位
            
        }
        if(addMod==1){//多出最长的一位数
            ListNode* l3=new ListNode(1);
            trace->next=l3;
        }
        trace=l;
        l=l->next;
        delete trace;
        return l;
    }
};

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

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

相关文章

模拟算法:代码世界的生活模拟器

✨✨✨学习的道路很枯燥,希望我们能并肩走下来! 文章目录 目录 文章目录 前言 一. 模拟算法的总结 二. 模拟算法题目 2.1 替换所有的问号 2.2 提莫攻击 2.3 Z字形变换 2.4 外观数列 2.5 数青蛙 总结 前言 本篇详细介绍了模拟算法的使用,让…

Word 文本框技巧2则

1 调整大小 一种方法是,选中文本框,周围出现锚点,然后用鼠标拖动来调整大小; 精确按数值调整,在 格式 菜单下有多个分栏,一般最后一个分栏是 大小 ;在此输入高度和宽度的数值,来调整…

万能DIY预约小程序源码系统 适合任何行业在线预约报名 带完整的安装代码包以及搭建教程

系统概述 在当今数字化时代,线上预约和报名系统已经成为各行各业不可或缺的工具。为了满足市场需求,万能 DIY 预约小程序源码系统应运而生,它为各类企业和组织提供了一种便捷、高效、灵活的解决方案,可适用于任何行业的在线预约和…

3D营销可以应用于哪些领域?

着科技的飞速发展,3D营销技术正逐渐为各行各业带来前所未有的机遇与挑战,特别是在电商、汽车、数码家电、家居、时尚、教育、制造等领域,其应用愈发广泛。 1. 汽车行业 3D营销为汽车行业打破了时空的界限,构建了逼真的虚拟展厅。…

手把手教程 | 云端部署语音合成神器——ChatTTS

近期,ChatTTS 凭借其高度仿真的 AI 语音合成技术迅速走红!ChatTTS 是专为对话场景设计的文本转语音模型,例如 LLM 助手对话任务,支持中英文两种语言。其最大的模型在超过 10 万小时的中英文数据上进行训练,确保了高质量…

来都来了,8个JavaScript技巧奉上

吆喝一声,如果你计算机、软件工程、电子等相关专业本科及以上学历,欢迎来共事。前后端/测试可投,技术大厂。 JavaScript 作为最流行的语言之一,其语法灵活且每年都在不断吸纳新特性,即使是一个从业多年的老手&#xff…

深圳信用贷款之路:申请了10次都被拒!这三步帮你逆袭银行贷款!

贷款客户最头疼的就是明明查询了一堆资料,贷款还是办不下来!尤其是那些负债累累的,急需资金还月供和本金的朋友们,不是在贷款就是在贷款的路上,一个月申请了10次都被拒!去了好几家贷款机构,费用…

手机制造计划调度场景下的复杂约束

获取更多资讯,赶快关注上面的公众号吧! 文章目录 手机制造过程大致分为SMT、板测、主板预加工、预组、组装、整测、包装等7大工段,每个工段包含一条或多条线体,根据项目要求和线体配置的差异,项目选择线体的适配度(优先级)不同,而且不同产品的工艺流程可能存在差异,共…

Hedra:让您的照片说话

在数字内容创作的世界里,我们总是在寻找那些能够让我们的作品更加生动和吸引人的工具。Hedra软件就是这样一款工具,它能够让您的照片动起来,甚至说话。想象一下,您的家庭相册中的照片突然变得栩栩如生,或者您的产品图片…

搭建Vue的环境

目录 # 开篇 步骤一,准备Vue 的环境 步骤二,下载Vue.js的包 步骤三,创建并打开写前端代码的文件夹 步骤四,在VSCode中引入Vue.js的包 步骤五,创建第一个vue.html Vue其他知识 Vue.config命令 # 开篇 介绍&…

朝阳医院2018年销售数据 数据分析与可视化

代码及数据集下载传送门 数据分析与可视化-朝阳医院2018销售数据-ipynbcsv 实践内容 以朝阳医院2018年销售数据为例,目的是了解朝阳医院在2018年里的销售情况,这就需要知道几个业务指标,本次的分析目标是从销售数据中分析出以下业务指标&am…

kafka的基本模型

kafka官网 线程和线程之间的数据交互 在jvm里不同的线程有自己的栈内存,但彼此之间交互可以在共享的内存中进行,即堆内存,堆内存会将这些消息放到队列中,具体实现jvm见,栈内存各自维护,堆内存大家共享 进…

【SD3辅助工具推荐】InstantX发布了三种SD3专属的ControlNet模式——Pose、Canny和Tile

InstantX 是一家专注于人工智能内容生成的独立研究机构。此前,曾开源著名的InstantID和论文《InstantID : Zero-shot Identity-Preserving Generation in Seconds》。随着本月12号,Stability AI正式开源了其产品 Stable Diffusion 3,这家机构…

开发板连接WiFi+开发板配置动态/静态IP

一、开发板连接WiFi 1、OTG线连接,使用adb进入开发板命令行。 2、使用下面指令来连接 wifi: connmanctl //进入 WIIF操作终端 connmanctl> enable wifi //使能 WIFI3、继续进入 connmanctl操作终端 connmanctl> scan wifi //开启 WIFI扫描,可以…

深度学习算法informer(时序预测)(三)(Encoder)

一、EncoderLayer架构如图(不改变输入形状) 二、ConvLayer架构如图(输入形状中特征维度减半) 三、Encoder整体 包括三部分 1. 多层EncoderLayer 2. 多层ConvLayer 3. 层归一化 代码如下 class AttentionLayer(nn.Module):de…

前端安全——最新:lodash原型漏洞从发现到修复全过程

前端安全——最新:lodash原型漏洞从发现到修复全过程 1. 漏洞复现 现在很多系统的前端都是基于vue和react框架的,所以就肯定少不了引入各种依赖,而lodash作为一款非常流行的npm库,每月的下载量超过8000万次。可以说是使用的十分…

ASP.NET MVC企业级程序设计(增删,int类型转时间取余)

目录 题目: 实现过程 控制器代码 DAL BLL Index Jia 题目: 实现过程 控制器代码 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using MvcApplication1.Models;namespace …

Palo Alto GlobalProtect App 6.3 (macOS, Linux, Windows, Andriod) - 端点网络安全客户端

Palo Alto GlobalProtect App 6.3 (macOS, Linux, Windows, Andriod) - 端点网络安全客户端 Palo Alto Networks 远程访问 VPN 客户端软件 请访问原文链接:https://sysin.org/blog/globalprotect-6/,查看最新版。原创作品,转载请保留出处。…

idea-Spring框架与ioc容器

Sping是轻量级的开源J2EE框架,可以解决企业应用开发的复杂性 Spring有两个核心部分为Ioc和AOP Ioc:控制反转,吧创建对象过程交给Sping进行管理 AOP:面向切面,不修改代码进行功能增强 创建Maven项目 IDEA-2024 就直接创建java项目即可 创…

为什么有人认为Linux不如macOS?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「Linux的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!首先要明确你说的是哪个Lin…