当前位置: 首页 > news >正文

LeetCode | 两数相加 C语言

Problem: 2. 两数相加

文章目录

  • 思路
  • 解题方法
  • Code
  • 一些感想

思路

主要是一一相加和逆序的方式存储
先说逆序储存,看下图
我们先声明出指针p和指针q,还有指针head(主要用于return上而已),然后进行一系列操作,之后,p = q,之后的操作就是对q进行,至于p,只做一个动作,p = q
逆序储存的思想

	int flag = 0;struct ListNode *p = NULL, *q = NULL, *head = NULL;while(l1 != NULL && l2 != NULL) {if(flag == 0) {flag = 1;p = (struct ListNode*)malloc(sizeof(struct ListNode));p->next = NULL;head = p;} else {q = (struct ListNode*)malloc(sizeof(struct ListNode));q->next = NULL;p->next = q;p = q;}l1 = l1->next;l2 = l2->next;}

至于相加嘛!好说,将对应的两个数加起来,然后检查是否大于9,如果是,则要保留个位,并进一位(也就是将十位数的部分放入下一个相加的过程中),以指针p的部分为例——指针q的部分也一样。

p->val = l1->val + l2->val;
if(p->val > 9) {last = p->val / 10;p->val %= 10;
} else last = 0;

但是,要知道,l1与l2终会到达null,所以,对于剩余的部分也只是解决前面的“进一位”遗留的问题而已.

    while(l1 != NULL) {q = (struct ListNode*)malloc(sizeof(struct ListNode));q->val = l1->val + last;if(q->val > 9) {last = q->val / 10;q->val %= 10;} else last = 0;q->next =NULL;p->next = q;p = q;l1 = l1->next;}
    while(l2 != NULL) {q = (struct ListNode*)malloc(sizeof(struct ListNode));q->val = l2->val + last;if(q->val > 9) {last = q->val / 10;q->val %= 10;} else last = 0;q->next =NULL;p->next = q;p = q;l2 = l2->next;}

到最后,倘若还存在进一位,就得要再建一个节点。

    if(last > 0) {q = (struct ListNode*)malloc(sizeof(struct ListNode));q->val = last;if(q->val > 9) {last = q->val / 10;q->val %= 10;} else last = 0;q->next =NULL;p->next = q;p = q;}

解题方法

由思路可知

Code

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {struct ListNode *p = NULL, *q = NULL, *head = NULL;int flag = 0, last;while(l1 != NULL && l2 != NULL) {if(flag == 0) {flag = 1;p = (struct ListNode*)malloc(sizeof(struct ListNode));p->val = l1->val + l2->val;if(p->val > 9) {last = p->val / 10;p->val %= 10;} else last = 0;p->next = NULL;head = p;} else {q = (struct ListNode*)malloc(sizeof(struct ListNode));q->val = l1->val + l2->val + last;if(q->val > 9) {last = q->val / 10;q->val %= 10;} else last = 0;q->next =NULL;p->next = q;p = q;}l1 = l1->next;l2 = l2->next;}while(l1 != NULL) {q = (struct ListNode*)malloc(sizeof(struct ListNode));q->val = l1->val + last;if(q->val > 9) {last = q->val / 10;q->val %= 10;} else last = 0;q->next =NULL;p->next = q;p = q;l1 = l1->next;}while(l2 != NULL) {q = (struct ListNode*)malloc(sizeof(struct ListNode));q->val = l2->val + last;if(q->val > 9) {last = q->val / 10;q->val %= 10;} else last = 0;q->next =NULL;p->next = q;p = q;l2 = l2->next;}if(last > 0) {q = (struct ListNode*)malloc(sizeof(struct ListNode));q->val = last;if(q->val > 9) {last = q->val / 10;q->val %= 10;} else last = 0;q->next =NULL;p->next = q;p = q;}return head;
}

一些感想

其实,当时在解决这道题的时候,碰到过这样的问题

Line 70: Char 15: runtime error: member access within misaligned address 0xbebebebebebebebe for type 'struct ListNode', which requires 8 byte alignment [ListNode.c]0xbebebebebebebebe: note: pointer points here<memory cannot be printed>

后来,在我看了AuthurLEE的文章之后,我才知道原来是忘记在初始化的时候,让指针指向NULL了(包括head指针,还有结构体里面的next)

相关文章:

LeetCode | 两数相加 C语言

Problem: 2. 两数相加 文章目录 思路解题方法Code一些感想 思路 主要是一一相加和逆序的方式存储 先说逆序储存&#xff0c;看下图 我们先声明出指针p和指针q&#xff0c;还有指针head&#xff08;主要用于return上而已&#xff09;&#xff0c;然后进行一系列操作&#xff0c…...

【Spring MVC】处理器映射器:AbstractHandlerMethodMapping源码分析

目录 一、继承体系 二、HandlerMapping 三、AbstractHandlerMapping 四、AbstractHandlerMethodMapping 4.1 成员属性 4.1.1 MappingRegistry内部类 4.2 AbstractHandlerMethodMapping的初始化 4.3 getHandlerInternal()方法&#xff1a;根据当前的请求url&#xff0c;…...

网络编程知识整理

目录 1.1 引言 1.2 分层 1.3 TCP/IP的分层 1.4 互联网的地址 1.5 域名服务 1.6 封装 1.7 分用 1.8 端口号 1.1 引言 很多不同的厂家生产各种型号的计算机&#xff0c;它们运行完全不同的操作系统&#xff0c;但 T C P / I P协议族允许它们互相进行通信。这一点很让人感…...

【小白友好】leetcode 移动零

https://leetcode.cn/problems/move-zeroes/description/ 小白思想 思想上还是首先开一个指针i&#xff0c;i从左到右扫每一个元素&#xff0c;i每发现一个0&#xff0c;就把这个0推到最后&#xff0c;这样i到最后就可以了。 这个和删除元素那个题解的小白思想和一模一样&am…...

迭代、递归、尾递归实现斐波那契数列的第n项

1.什么是斐波那契数列&#xff1a; 斐波那契数&#xff0c;亦称之为斐波那契数列&#xff08;意大利语&#xff1a; Successione di Fibonacci)&#xff0c;又称黄金分割数列、费波那西数列、费波拿契数、费氏数列和兔子数列&#xff0c;指的是这样一个数列&#xff1a;0、1、…...

vulnhub靶场之driftingblues-1

一.环境搭建 1.靶场描述 get flags difficulty: easy about vm: tested and exported from virtualbox. dhcp and nested vtx/amdv enabled. you can contact me by email (it should be on my profile) for troubleshooting or questions. 2.靶场下载 https://www.vulnhub.…...

NGINX服务器配置实现加密的WebSocket连接WSS协议

一、背景 最近在做小程序开发&#xff0c;需要在nginx中配置websocket加密模式&#xff0c;即wss。初次配置wss时&#xff0c;踩了两个小时的坑&#xff0c;本文将踩坑过程分享给大家&#xff0c;有需要用到的伙伴可以直接copy即可实现&#xff0c;节省宝贵时间。 二、WebSo…...

5个免费文章神器,用来改写文章太方便了

在当今信息爆炸的时代&#xff0c;内容创作和编辑是网络世界中至关重要的环节。然而&#xff0c;有时候我们可能会遇到一些内容需要进行改写或者重组的情况。为了提高效率&#xff0c;让这一过程更加顺畅&#xff0c;我们可以借助一些免费的文章神器来帮助我们完成这一任务。下…...

详细教程!VMware Workstation Pro16 安装 + 创建 win7 虚拟机!

嚯嚯嚯&#xff0c;很多宝子都想拥有自己不同的操作系统环境&#xff0c;用于学习或项目搭建。买服务器费钱&#xff0c;虚拟机则成为了一个很好的选择。本文详细介绍VMware Workstation Pro 16安装及win7虚拟机创建&#xff0c;保姆级教程奉上&#xff01; 一、准备工作 VMw…...

Python文件和异常(二)

目录 三、异常 &#xff08;一&#xff09;处理 ZeroDivisionError 异常 &#xff08;二&#xff09;使用 try-except 代码块 &#xff08;三&#xff09;使用异常避免崩溃 &#xff08;四&#xff09;else 代码块 &#xff08;五&#xff09;处理 FileNotFoundError 异常…...

大模型+影像:智能手机“上春山”

这个春节假期&#xff0c;一首《上春山》火了。吃瓜群众热热闹闹学了一个假期的“春山学”&#xff0c;了解了抢占C位的各种技巧。 假期过去&#xff0c;开工大吉&#xff0c;手机行业开始抢占今年的C位。那么问题来了&#xff0c;今年智能手机最大的机会点在哪里&#xff1f;答…...

8-pytorch-损失函数与反向传播

b站小土堆pytorch教程学习笔记 根据loss更新模型参数 1.计算实际输出与目标之间的差距 2.为我们更新输出提供一定的依据&#xff08;反向传播&#xff09; 1 MSEloss import torch from torch.nn import L1Loss from torch import nninputstorch.tensor([1,2,3],dtypetorch.fl…...

MySQL高级特性篇(8)-数据库连接池的配置与优化

MySQL数据库连接池的配置与优化 MySQL数据库是当前最流行的关系型数据库管理系统之一&#xff0c;高效的数据库连接池配置与优化是提高数据库性能和并发性能的重要手段。本文将介绍MySQL数据库连接池的配置与优化&#xff0c;并提供详细示例。 1. 连接池的作用与优势 数据库…...

mac下使用jadx反编译工具

直接执行步骤&#xff1a; 1.创建 jadx目录 mkdir jadx2.将存储库克隆到目录 git clone https://github.com/skylot/jadx.git 3. 进入 jadx目录 cd jadx 4.执行编译 等待片刻 ./gradlew dist出现这个就代表安装好了。 5.最后找到 jadx-gui 可执行文件&#xff0c;双击两下…...

分布式一致性软件-zookeeper

在我们进行软件开发过程中&#xff0c;为了实现某个功能可能借助多个软件&#xff0c;如存储数据的数据库软件&#xff1a;MySQL&#xff0c;Redis&#xff1b;消息中间件&#xff1a;rocketMq&#xff0c;kafka等。那么在分布式系统中&#xff0c;如果想实现数据一致性&#x…...

企业计算机服务器中了babyk勒索病毒怎么办?Babyk勒索病毒解密数据恢复

随着网络技术的应用与普及&#xff0c;越来越多的企业采用了数字化办公模式&#xff0c;数字化办公模式可以为企业提供强有力的数据支撑&#xff0c;可以为企业的发展方向与产品业务调整做好基础工作。但网络是一把双刃剑&#xff0c;在为企业提供便利的同时&#xff0c;也为企…...

板块一 Servlet编程:第五节 Cookie对象全解 来自【汤米尼克的JAVAEE全套教程专栏】

板块一 Servlet编程&#xff1a;第五节 Cookie对象全解 一、什么是CookieCookie的源码 二、Cookie的具体操作&#xff08;1&#xff09;创建Cookie&#xff08;2&#xff09;获取Cookie&#xff08;3&#xff09;设置Cookie的到期时间&#xff08;4&#xff09;设置Cookie的路径…...

自动驾驶---Motion Planning之Path Boundary

1 背景 在上文《自动驾驶---Motion Planning之LaneChange》中,笔者提到过两种LaneChange的思路,这里再简单回顾一下:(1)利用Routing和周围环境的信息,决定是否进行换道的决策;(2)采用的博弈思想(蒙特卡洛树搜索---MCTS)决定是否进行换道的决策。不管是变道,避让还是…...

Leetcode 3048. Earliest Second to Mark Indices I

Leetcode 3048. Earliest Second to Mark Indices I 1. 解题思路2. 代码实现 题目链接&#xff1a;3048. Earliest Second to Mark Indices I 1. 解题思路 这一题的话基础的思路就是二分法查找最小的可以将所有的数字都mark上的最小位置。 因此&#xff0c;这里的问题就会变…...

从源码学习单例模式

单例模式 单例模式是一种设计模式&#xff0c;常用于确保一个类只有一个实例&#xff0c;并提供一个全局访问点。这意味着无论在程序的哪个地方&#xff0c;只能创建一个该类的实例&#xff0c;而不会出现多个相同实例的情况。 在单例模式中&#xff0c;常用的实现方式包括懒汉…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 现代智能交通系统 &#xff08;ITS&#xff09; 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 &#xff08;…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...