每日一题(两数相加)

每日一题(两数相加)

2. 两数相加 - 力扣(LeetCode)

在这里插入图片描述

思路

思路:

  1. 由于链表从头开始向后存储的是低权值位的数据,所以只需要两个指针p1和p2,分别从链表的头节点开始遍历。同时创建一个新的指针newhead,(用于构造新链表,将创建的新节点进行头插)。并在这个构造的新链表的相应的节点中存储p1和p2对应值的相加结果。

  2. 但是p1和p2所对应的节点的值相加可能会产生进位,所以创建一个pre变量用于存储相应的进位值。(假设p1和p2所指向的节点的值是n1和n2,那么产生的进位值就是:pre = (n1+n2+pre)/10;同时对应新的创建的节点的值就应该是 (pre+n1+n2)%10;。对应代码如下:

        struct ListNode* p1=NULL,   *p2 = NULL, *newhead = NULL,*tail = NULL;int pre = 0;//pre一开始的值必须是0if(!l1)return l2;if(!l2)return l1;p1 = l1;p2 = l2;while(p1&&p2){
    struct ListNode* newnode = (struct ListNode*)malloc(sizeof(struct ListNode));newnode->val = (p1->val+p2->val+pre)%10;newnode->next = NULL;if(newhead == NULL){//更新pre(进位)pre = (p1->val + p2->val)/10;newhead = tail = newnode;}else{//更新pre(进位)pre = (p1->val + p2->val+pre)/10;tail->next = newnode;tail = tail->next;}p1 = p1->next;p2 = p2->next;}
    
  3. 假如遇到的链表有以下这种长短不一的情况:就需要接着遍历那个较长的链表,将较长的链表中未被遍历的节点的值与pre的值一起参与运算,(因为这俩个链表的相同长度的部分的链表的最后一个节点中存储的值也会存在相加产生进位的情况)。代码实现如下:

    while(p2)//当p2没有走完{
    struct ListNode* newnode = (struct ListNode*)malloc(sizeof(struct ListNode));newnode->val = (p2->val+pre)%10;newnode->next = NULL;//更新prepre = (p2->val+pre)/10;p2 = p2->next;tail->next = newnode;tail = tail->next;} while(p1)//当p1没有走完{
    struct ListNode* newnode = (struct ListNode*)malloc(sizeof(struct ListNode));newnode->val = (p1->val+pre)%10;newnode->next = NULL;//更新prepre = (p1->val+pre)/10;p1 = p1->next;tail->next = newnode;tail = tail->next;}
    

    在这里插入图片描述

  4. 假如链表是如下这几种情况,即便是将两个链表都遍历之后,此时的进位值仍然是1,说明此时的相加计算还没有结束,此时还需要一个节点来存储进位值,所以在将两个链表遍历结束之后,需要对pre的值进行判断,假若pre的值是0,则直接返回newhead即可,pre的值若是1,则还需要创建一个节点。代码如下:

    if(pre){
    struct ListNode* newnode = (struct ListNode*)malloc(sizeof(struct ListNode));newnode->val = pre;newnode->next = NULL;tail->next = newnode;tail = tail->next;}
    

    在这里插入图片描述在这里插入图片描述

代码实现

struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2){struct ListNode* p1=NULL,   *p2 = NULL, *newhead = NULL,*tail = NULL;int pre = 0;if(!l1)return l2;if(!l2)return l1;p1 = l1;p2 = l2;while(p1&&p2){
struct ListNode* newnode = (struct ListNode*)malloc(sizeof(struct ListNode));newnode->val = (p1->val+p2->val+pre)%10;newnode->next = NULL;if(newhead == NULL){//更新pre(进位)pre = (p1->val + p2->val)/10;newhead = tail = newnode;}else{//更新pre(进位)pre = (p1->val + p2->val+pre)/10;tail->next = newnode;tail = tail->next;}p1 = p1->next;p2 = p2->next;}if(pre){
struct ListNode* newnode = (struct ListNode*)malloc(sizeof(struct ListNode));newnode->val = pre;newnode->next = NULL;tail->next = newnode;tail = tail->next;}return newhead;
}

完结

两数相加的链表习题的分析就到这里啦,若有不足,欢迎评论区指正,下期见!

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

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

相关文章

全球汽车安全气囊芯片总体规模分析

安全气囊系统是一种被动安全性的保护系统,它与座椅安全带配合使用,可以为乘员提供有效的防撞保护。在汽车相撞时,汽车安全气囊可使头部受伤率减少25%,面部受伤率减少80%左右。 汽车安全气囊芯片是整个系统的控制核心,并…

给微信小程序添加隐私协议

前些日子,微信官方针对用户的安全信息又进行了增强,这次更新几乎要求所有的小程序都需要进行整改,只要是涉及到用户的隐私的小程序都需要进行整改,这次整改是强制性的。 点开相关指引之后会跳转到下面的链接:参考链接…

【深度学习】Pytorch 系列教程(十一):PyTorch数据结构:3、变量(Variable)介绍

目录 一、前言 二、实验环境 三、PyTorch数据结构 0、分类 1、张量(Tensor) 2、张量操作(Tensor Operations) 3、变量(Variable) 一、前言 ChatGPT: PyTorch是一个开源的机器学习框架&am…

主题配置和 消息发送(一)KafkaTemplate 的使用

一、主题 1.1、配置主题 在应用程序上下文定义一个 KafkaAdmin Bean, 它可以自动将主题添加到代理。通过这个Bean可以将 每一个新建的主题 Topic 添加到应用程序上下文中。下面是一个简单的示例:也可以创建 TopicBuilder 类,使用它创建 Bean 更加简单。 @Bean public Kafka…

C++:string的模拟实现

目录 1.string的四大默认函数 1.1构造函数 1.2析构函数 1.3拷贝构造 1.4赋值运算符重载 2.访问string的三种方式 2.1[]访问 2.2迭代器访问 2.3范围for(本质是迭代器) 3.string相关功能的实现 3.1modify 3.2capacity 3.3access 3.4relations 3.5补充 4.补充 1.s…

C++之哈希表、哈希桶的实现

哈希表、哈希桶的实现 哈希概念哈希冲突哈希函数哈希冲突解决闭散列哈希表闭散列实现哈希表的结构哈希表的插入哈希表的查找哈希表的删除 开散列开散列概念哈希表的结构哈希表的插入哈希表的查找哈希表的删除 哈希概念 顺序结构以及平衡树中,元素关键码与其存储位置…

git everything up-to-date解决方法

git push origin master 总是提示git everything up-to-date,原因是远端没有分支 . 操作如下:(1)查看当前分支名 git branch -av(2)git push --set-upstream origin (当前分支名)

Linux-相关操作

2.2.2 Linux目录结构 /:根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录。所有的东西都是从这里开始。当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始&#xf…

P2239 [NOIP2014 普及组] 螺旋矩阵

题目链接&#xff1a; 找到矩阵元素与 n , i , j \rm n, i, j n,i,j之间的关系&#xff0c;然后直接输出 #include <bits/stdc.h>using namespace std;int find(int n, int i, int j) {if (i 1) return j;if (j n) return i n - 1;if (i n) return 3 *n - 1 - j;if …

广州xx策划公司MongoDB恢复-2023.09.09

2023.09.08用户的MongoDB数据库被勒索病毒攻击&#xff0c;数据全部被清空。 提示&#xff1a; mongoDB的默认端口为27017&#xff0c;黑客通常通过全网段扫描27017是否开放判断是否是MongoDB服务器。一旦发现27017开放&#xff0c;黑客就会用空密码、弱密码尝试连接数据库。黑…

Mojo-SDK详细安装教程

Mojo-SDK安装 运行环境&#xff1a;windows11wsl2&#xff08;ubuntu1804&#xff09; 官方推荐&#xff1a;wsl2&#xff08;ubuntu2204&#xff09;&#xff0c;我下面是wsl2&#xff08;ubuntu1804&#xff09;&#xff0c;发现有些问题&#xff0c;不知道是不是ubuntu版本问…

opencv dnn模块 示例(16) 目标检测 object_detection 之 yolov4

博客【opencv dnn模块 示例(3) 目标检测 object_detection (2) YOLO object detection】 测试了yolov3 及之前系列的模型&#xff0c;有在博客【opencv dnn模块 示例(15) opencv4.2版本dnn支持cuda加速&#xff08;vs2015异常解决&#xff09;】 说明了如何使用dnn模块进行cuda…

kafka 3.5 主题分区ISR伸缩源码

ISR(In-sync Replicas)&#xff1a;保持同步的副本 OSR(Outof-sync Replicas)&#xff1a;不同步的副本。最开始所有的副本都在ISR中&#xff0c;在kafka工作的过程中&#xff0c;如果某个副本同步速度慢于replica.lag.time.max.ms指定的阈值&#xff0c;则被踢出ISR存入OSR&am…

(1)输入输出函数:cin和cout(2)数学函数:sqrt、pow、sin、cos、tan等

输入输出函数&#xff1a;cin 和 cout 在C编程语言中&#xff0c;为了与用户进行交互和显示程序的结果&#xff0c;我们使用了两个非常重要的函数&#xff1a;cin 和 cout。这两个函数分别用于输入和输出。 cin是C中的标准输入流对象&#xff0c;它用于从键盘接收用户的输入。…

SQL12 高级操作符练习(2)

描述 题目&#xff1a;现在运营想要找到学校为北大或GPA在3.7以上(不包括3.7)的用户进行调研&#xff0c;请你取出相关数据&#xff08;使用OR实现&#xff09; 示例&#xff1a;user_profile iddevice_idgenderageuniversitygpa12138male21北京大学3.423214male复旦大学4.03…

六、不root不magisk不xposed lsposed frida原生修改定位

前言常用风控APP检测1.Aida64检测2.momo检测3.微霸检测4.cellular-z检测 厂商测试总结 前言 不root不戴面具 不xposed lsposed frida&#xff0c;不分身&#xff0c;不多开&#xff0c;最完美的原生修改定位。 常用风控APP检测 先看效果再说原理&#xff0c;先过一遍环境 1.Ai…

聚类分析 | MATLAB实现基于SOM自组织特征映射聚类可视化

聚类分析 | MATLAB实现基于SOM自组织特征映射聚类可视化 目录 聚类分析 | MATLAB实现基于SOM自组织特征映射聚类可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 基于自组织特征映射聚类算法(SOM)的数据聚类可视化 可直接运行 注释清晰 Matlab语言 1.多特征输入&…

Python 可迭代对象、迭代器、生成器

可迭代对象 定义 在Python的任意对象中&#xff0c;只要它定义了可以返回一个迭代器的 __iter__ 魔法方法&#xff0c;或者定义了可以支持下标索引的 __getitem__ 方法&#xff0c;那么它就是一个可迭代对象&#xff0c;通俗的说就是可以通过 for 循环遍历了。Python 原生的列…

爬虫 — 正则案例

目录 一、需求二、页面分析三、代码实现 一、需求 目标网站&#xff1a;http://www.weather.com.cn/weather/101010700.shtml 需求&#xff1a;获取日期&#xff0c;天气&#xff0c;温度&#xff0c;风力数据 二、页面分析 1、确定 url&#xff0c;静态加载 url&#xff1a;ht…

Mybatis的mapper.xml批量插入、修改sql

今天要有个功能&#xff0c;要进行一批数据的插入和修改&#xff0c;为了不频繁调用数据库&#xff0c;所以想到了批量插入和修改&#xff0c;因为从毕业后&#xff0c;就没写过批量插入和批量修改&#xff0c;所以在这里记录一下&#xff0c;避免后续再遇到忘记怎么写了 批量…