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

LeetCode 2.两数相加

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。

请你将两个数相加,并以相同形式返回一个表示和的链表。

你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

示例 1:

输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.
示例 2:

输入:l1 = [0], l2 = [0]
输出:[0]
示例 3:

输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
输出:[8,9,9,9,0,0,0,1]

提示:

每个链表中的节点数在范围 [1, 100] 内
0 <= Node.val <= 9
题目数据保证列表表示的数字不含前导零

直接模拟即可:

/*** 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 *node1 = l1;ListNode *node2 = l2; bool carry = false;ListNode *ans = nullptr;ListNode *cur = nullptr;while (node1 || node2){int val1 = node1 ? node1->val : 0;int val2 = node2 ? node2->val : 0;int ansVal = val1 + val2 + carry;carry = ansVal >= 10;ansVal %= 10;ListNode *ansNode = new ListNode(ansVal);if (ans == nullptr){ans = ansNode;cur = ansNode;}else{cur->next = ansNode;cur = cur->next;}if (node1){node1 = node1->next;}if (node2){node2 = node2->next;}}if (carry){cur->next = new ListNode(1);}return ans;}
};

如果l1的长度为n,l2的长度为m,则此算法时间复杂度为O(m+n),空间复杂度为O(1)。

http://www.lryc.cn/news/328109.html

相关文章:

  • 如何利用ChatGPT提升学术论文写作效率
  • LLMs之Mistral:Mistral 7B v0.2的简介、安装和使用方法、案例应用之详细攻略
  • 深入解析Oracle数据库中的WITH AS(CTE)原理
  • Linux 环境安装 Elasticsearch 8.X
  • Java零基础-集合:函数式接口
  • Redis Scan指令解析与使用示例
  • Qt+OpenGL入门教程(三)——绘制三角形
  • springcloud基本使用(搭建eureka服务端)
  • 第十二章:预处理命令
  • Game Audio Programming
  • 高风险IP来自哪里:探讨IP地址来源及其风险性质
  • 【每日跟读】常用英语500句(300~400)
  • 设计模式(7):装饰器模式
  • Flink SQL填坑记3:两个kafka数据关联查询
  • 移动平台实时动态多点光源方案:Cluster Light
  • 2024年03月CCF-GESP编程能力等级认证C++编程八级真题解析
  • (十一)图像的罗伯特梯度锐化
  • 实验九 枚举问题(运算模拟)
  • 2024 年 AI 辅助研发趋势:从研发数字化到 AI + 开发工具 2.0,不止于 Copilot
  • UE5数字孪生系列笔记(三)
  • ASR-LLM-TTS 大模型对话实现案例;语音识别、大模型对话、声音生成
  • 主干网络篇 | YOLOv8更换主干网络之EfficientNet
  • Web开发-Django学习笔记
  • 关于深度学习的 PyTorch 项目如何上手分析?从什么地方切入?
  • JavaEE企业开发新技术4
  • CSS使用JS变量
  • 拆分巨石:将MVPS和MVAS应用于遗留应用程序——可持续架构(六)
  • Linux renice命令教程:如何优雅地调整进程优先级(附案例详解和注意事项)
  • Gitea 的详细介绍
  • Kotlin object