【刷题】 leetcode 2 .两数相加

在这里插入图片描述

两数相加

  • 两数相加
    • 1 思路一 (暴毙版)
    • 2 思路二 (本质出发)
  • 谢谢阅读Thanks♪(・ω・)ノ
  • 下一篇文章见!!!!!!

两数相加

我们来看看题目,,,,
往往困难的题只需要 简单的叙述

好像只用找到两个数,整合成一个链表就可以。应该
在这里插入图片描述

1 思路一 (暴毙版)

  1. 首先 我最快想到思路是 分别根据两个链表求出对应数
  2. 然后加一起 ,得到和
  3. 再把和拆分储存到链表里
    为此我们需要手撕一下链表头插。
 typedef struct ListNode SLTNode;
SLTNode* buynode(int n) {
	//开辟空间
    SLTNode* node = (SLTNode*)malloc(sizeof(SLTNode));
    node->next = NULL;
    node->val = n;
    return node;
}
void pushback(SLTNode** ret, int n) {
	//创建节点
    SLTNode* node = buynode(n);
    //如果头为空 node成为头
    if (*ret == NULL)
    {
        *ret = node;
        return;
    }
	//找尾
    SLTNode* cur = *ret;
    while(cur->next) {
        cur = cur->next;
    }
    //插入
    cur->next = node;
    return;
}

SLTNode* addTwoNumbers(SLTNode* l1, SLTNode* l2) {
    //选择long long 来储存较大数
    long long  num1 = 0, num2 = 0;
    long long   a = 1;
    //计算数一
    while (l1 != NULL) {
        num1 += (l1->val) * a;
        l1 = l1->next;
        a *= 10;
    }
    a = 1;
    //计算数二
    while (l2 != NULL) {
        num2 += (l2->val) * a;
        l2 = l2->next;
        a *= 10;
    }
    //求和
    long long  sum = num1 + num2;
    //构建链表
    SLTNode* ret = NULL;
    if(sum == 0)
    {
        pushback(&ret,0);
        return ret;
    }
    while (sum != 0) {
        long long  n = sum % 10;
        pushback(&ret, n);
        sum = sum / 10;
    }
    //返回链表
    return ret;
}

一顿操作猛如虎,一看提交原地杵········
在这里插入图片描述
虽然我已经使用最大的数据类型 long long ,但是最后的测试数据太大了,还有3 个样例无法通过。这下子要从头开始了。
这就得夸夸力扣了,丰富的测试用例,不会随便让你过

2 思路二 (本质出发)

思路一的简单加和不能完成目的,那我们只好深入到加法的本质中去:
按位计算,满10进一 ,逐个逐个计算
这样就算把天文数字填进来,只要内存够,咱都能解决!!!

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
typedef struct ListNode Listnode;
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {
    //创建头结点
    Listnode* head = (Listnode*)malloc(sizeof(Listnode));
    //创建尾指针
    Listnode* cur = head;
    //进位数
    int t = 0;
    //l1 l2 t 全为空才停止
    while(l1||l2||t){
        //l1 为真则把值赋值在t上
        if(l1) {
            t += l1->val;
            l1 = l1->next;
        }
        //l2 为真则把值赋值在t上
        if(l2) {
            t += l2->val;
            l2 = l2->next;
        }
        //创建节点
        cur->next = ( Listnode *)malloc(sizeof(Listnode));
        cur->next->val = t % 10;
        cur->next->next = NULL;
        //向后移动
        cur = cur->next;
        t /= 10;
    }
    return head->next;

}

一气呵成,呼~~~~
我们舍去手撕链表头插的痛苦。直接改为“满足条件”就开辟新空间。因此为了方便这里使用带头链表。
提交! 过过过过啦!!!!!!
在这里插入图片描述
来看看性能怎么样,打败了80%的用户,10ms.
来分析一下咱们算法的时间复杂度 ,遍历链表,最坏情况也是遍历了一条很长的链表。那咱时间复杂度就是O(n)。
啊?还有比 O(n) 更快的算法???

答案是肯定没有,运行速度的具体原因和配置环境有关
咱们的代码冲一冲也可以0ms。
这道题考察了咱们对循环的认识,通过循环把加法本质实现。进而完成题目!

谢谢阅读Thanks♪(・ω・)ノ

下一篇文章见!!!!!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

系统架构的演变:从单体到微服务的旅程

文章目录 前言一、单体架构简图 二、垂直架构简图 三、水平架构简图 四、面向服务架构(SOA)简图 五、微服务架构简图 总结 前言 随着信息技术的快速发展,系统架构也在不断演变。从早期的单体架构到现代的微服务架构,每一次的变革都…

Numpy的学习 第一课 了解以及使用

1.输入模式 1.编辑模式 绿色2.命令模式 蓝色 2.运行 直接输入jupyter notebook 3.文档注释 查看函数帮助文档命令 help(函数) 单问号与多问号 单问号显示文档 多问号显示文档代码 3.shifttab 显示参数 4.运行外部文件 %run 路径,可绝对可相对 这里运行了就相当于方法了,或者…

C++ 之LeetCode刷题记录(十二)

😄😊😆😃😄😊😆😃 开始cpp刷题之旅。 依旧是追求耗时0s的一天。 69. x 的平方根 示例 1: 输入:x 4 输出:2 示例 2: 输入&#x…

软件测试|使用Python轻松裁剪视频

简介 裁剪视频是在视频编辑和处理中常见的任务之一,Python提供了多种库和工具,可以用来裁剪视频。在本文中,我们将详细讨论如何使用Python来裁剪视频,并提供示例代码。 步骤1:环境准备 首先,我们要安装必…

交换机配置及网络测试

实验环境 拓扑图 Ip规划表 部门 主机数量 网络地址 子网掩码 网关 可用ip Vlan 市场部 38 192.168.131.0 255.255.255.0 192.168.131.1 2-254 11 研发部 53 192.168.132.0 255.255.255.0 192.168.132.1 2-254 12 财务部 9 192.168.133.0 255.255.255…

更适合3D项目的UI、事件交互!纯国产数字孪生引擎持续升级中!!!

UI和事件交互是3D可视化项目中最常见的模块,主要用于信息添加、展示,用来确保按照用户需求呈现内容并完成交互。 平时工作在进行UI和交互设计时,经常出现以下问题:UI过于复杂导致3D项目内交互效率低下,或者是结合3D项目…

重磅!鼎捷参与编写的《小灯塔企业数字化转型能力成熟度模型》团体标准发布

近日,由上海市计算机行业协会组织发起,鼎捷软件参与起草的《小灯塔企业数字化转型能力成熟度模型》团体标准正式发布。标准旨在共同推动业内标准的设定和完善,加快企业的数字化转型,助力产业快速发展。 作为业内专业的数字化转型服…

【第65例】IPD体系进阶:PDT跨职能团队

内容简介 这节内容主要来谈谈 IPD 体系中的一个关键跨职能团队(PDT)。 跨部门协作也是 IPD 中的一个核心思想。 这是因为创新和研发是全公司的行为。 接力棒式的产品开发流程是很难保证最终的产品质量。 在 IPD 体系中,无论是需求管理、产品和技术规划、项目任务书开发…

【技术分享】远程透传网关-单网口快速实现西门子S7-300/400 PLC程序远程上下载

准备工作 一台可联网操作的电脑一台单网口的远程透传网关及博达远程透传配置工具网线一条,用于实现网络连接和连接PLC一台西门子S7- 300/400 PLC及其编程软件一张4G卡或WIFI天线实现通讯(使用4G联网则插入4G SIM卡,WIFI联网则将WIFI天线插入USB口&#…

【架构】docker实现3主3从架构配置【案例1/4】

一,集群规划及准备工作 架构实现:Redis3主3从 二,搭建命令 第一步,创建6台服务: docker run -d --name redis-node-1 --net host --privilegedtrue -v /data/redis/share/redis-node-1:/data redis:6.0.8 --clust…

全球移动通信市场,正在经历哪些新变化?

2023年已经结束了。回顾这一年的全球移动通信市场,如果让我用一个词来总结,那就是——“厚积薄发”。 从表面上来看,似乎并没有什么大事情发生。但实际上,平静的湖面之下,却是一片波涛汹涌、风云激荡。 无论是消费互联…

python使用Apache+mod_wsgi部署Flask

python使用Apachemod_wsgi部署Flask 一、安装python环境(V3.10.10)二、安装mod_wsgi三、安装Apache1、下载2、解压3、配置 四、安装项目依赖五、启动六、基于多端口部署多个flask项目 一、安装python环境(V3.10.10) 安装时勾选&q…

小白准备蓝桥杯之旅(c/c++b组)

前言:省赛获奖比例高达百分之60,只要比一半的人努力,你就能大概率获奖。 寒假做的3件事 1.稳基础 熟练掌握基础语法部分,c比c多个stl库优势,c语言的同学需要会实现c中stl库部分 2.刷真题 大概比赛前30天,坚持每天做…

中级软件架构师----UML包图知识点汇总

包图知识目录目录 包的属性元素与包的关系包与包的关系 包的属性 每个包必须有一个与其他包相区别的名称,有简单名和路径名之分,简单名是仅含一个简单的名称;路径名是以包所位于的外围包的名字作为前缀的包名。包元素的可见性,号…

阿里云 linux Centos7 安装 Miniconda3 + 创建Python环境

1.下载miniconda (1)法一:可以去下载清华源的miniconda镜像源,选择自己需要的版本,然后上传到Linux服务器上,linux上使用请选择linux版本,如下: (2)法二&…

基于SSM的毕业生就业管理系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue、HTML 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是…

maven 配置http私服Since Maven 3.8.1 http repositories are blocked. 报错处理

刷maven报错 com.saas:pdf:pom:0.0.1 failed to transfer from http://0.0.0.0/ during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of maven-default-http-blocker has elapsed or …

VLAN区域间路由详解

LAN局域网 WAN 广域网 WLAN无线局域网 VLAN:虚拟局域网 交换机和路由器,协同工作后,将原来的一个广播域,切分为多个,节省硬件成本; 配置思路: 交换机上创建vlan交换机上的各个接口划分到对应的vlan中 T…

阿里云国外云服务器多少钱?2024年最新价格

阿里云国外服务器优惠活动「全球云服务器精选特惠」,国外服务器租用价格24元一个月起,免备案适合搭建网站,部署独立站等业务场景,阿里云服务器网aliyunfuwuqi.com分享阿里云国外服务器优惠活动: 全球云服务器精选特惠…

three.js 点按钮,相机飞行靠近观察设备

效果&#xff1a; 代码&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"></div><div class"box-right&quo…