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

LeetCode2 两数相加 两个链表相加(C++)

题目链接

题目描述

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

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

你可以假设除了数字 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
题目数据保证列表表示的数字不含前导零

LeetCode实现(C++)

ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {if (l1 == NULL || l2 == NULL){if (l2 == NULL){return l1;}if (l1 == NULL){return l2;}}bool carry = false;	// 进位ListNode* l3 = new ListNode();ListNode* Ret = l3;	// 记录返回链表头结点while (l1 != NULL || l2 != NULL){if (carry){l3->val++;}if (l1){l3->val += l1->val;l1 = l1->next;}if (l2){l3->val += l2->val;l2 = l2->next;}if (l3->val >= 10){carry = true;l3->val -= 10;}else{carry = false;}if (l1 != NULL || l2 != NULL){l3->next = new ListNode();l3 = l3->next;}}if (carry){l3->next = new ListNode(carry);}return Ret;}

完整实现和测试(C++)

#include <iostream>
#include <string>
using namespace std;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 Solution2 
{public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {if (l1 == NULL || l2 == NULL){if (l2 == NULL){return l1;}if (l1 == NULL){return l2;}}bool carry = false;	// 进位ListNode* l3 = new ListNode();ListNode* Ret = l3;	// 记录返回链表头结点while (l1 != NULL || l2 != NULL){if (carry){l3->val++;}if (l1){l3->val += l1->val;l1 = l1->next;}if (l2){l3->val += l2->val;l2 = l2->next;}if (l3->val >= 10){carry = true;l3->val -= 10;}else{carry = false;}if (l1 != NULL || l2 != NULL){l3->next = new ListNode();l3 = l3->next;}}if (carry){l3->next = new ListNode(carry);}return Ret;}void ShowList(ListNode* L)	// 显示链表中所有值{while (L != NULL){cout << L->val << " ";L = L->next;}cout << endl;}void DeleteList(ListNode* L)	// 清理内存{if(!L){return ;}ListNode* p = L->next;	// 先保存下一个结点delete L;L = p;while (L != NULL){p = L->next;	// 先保存delete L;L = p;}}ListNode* InitList(string strNum){if (strNum.empty()){return NULL;}ListNode* tmp = new ListNode();ListNode* Ret = tmp;for (int i = 0; i < strNum.length(); i++){tmp->val = atoi(strNum.substr(i, 1).c_str());if (i + 1 < strNum.length()){tmp->next = new ListNode();}tmp = tmp->next;}return Ret;}
};void test(string str1, string str2)
{ListNode* l1;ListNode* l2;ListNode* l3;Solution2 obj;cout << "--------------------- str1:" << str1 << " str2:" << str2 << " ---------------------" << endl;l1 = obj.InitList(str1);l2 = obj.InitList(str2);l3 = obj.addTwoNumbers(l1, l2);obj.ShowList(l1);obj.ShowList(l2);obj.ShowList(l3);obj.DeleteList(l1);obj.DeleteList(l2);obj.DeleteList(l3);cout << "---------------------------------------------------------------\n" << endl;
}int main()
{// 输入:l1 = [2, 4, 3], l2 = [5, 6, 4]// 输出:[7, 0, 8]test("243", "564");// 输入:l1 = [0], l2 = [0]// 输出:[0]test("0", "0");// 输入:l1 = [9, 9, 9, 9, 9, 9, 9], l2 = [9, 9, 9, 9]// 输出:[8, 9, 9, 9, 0, 0, 0, 1]test("9999999", "9999");test("1", "9999");test("99", "9");return 0;
}

文章转载自:

http://H6QCQtx0.ykrss.cn
http://rgc7tz5e.ykrss.cn
http://qaZD7SwO.ykrss.cn
http://Wo5UDNKS.ykrss.cn
http://ZjH1XsZY.ykrss.cn
http://R5qBl7Rc.ykrss.cn
http://LRc8JM9n.ykrss.cn
http://zKmfEIxc.ykrss.cn
http://bVM0k8nF.ykrss.cn
http://7EUKPRVC.ykrss.cn
http://ctXGkSX1.ykrss.cn
http://nKSl33mJ.ykrss.cn
http://FvmoE41o.ykrss.cn
http://5z1ZaVGj.ykrss.cn
http://BV6lGaws.ykrss.cn
http://empdRGwt.ykrss.cn
http://4PqWXEne.ykrss.cn
http://wb5THFG4.ykrss.cn
http://49fANESa.ykrss.cn
http://sVDWeZwz.ykrss.cn
http://MM2cKT8r.ykrss.cn
http://57Vi2iYf.ykrss.cn
http://kT6yIzyY.ykrss.cn
http://3POKOCOo.ykrss.cn
http://N6WVAFaG.ykrss.cn
http://ephA3HJh.ykrss.cn
http://5NwHd0Ly.ykrss.cn
http://62AxAaGG.ykrss.cn
http://AWkGnS3o.ykrss.cn
http://8kyrSIyf.ykrss.cn
http://www.dtcms.com/a/378738.html

相关文章:

  • 项目1——单片机程序审查,控制系统项目评估总结报告
  • 科技行业新闻发布平台哪家好?多场景推广专业方案服务商推荐
  • 电力基站掉电数据丢失问题该靠天硕工业级SSD固态硬盘解决吗?
  • VSCode 设置和选择conda环境
  • 遗传算法属于机器学习吗?
  • html获取16个随机颜色并不重复
  • 数据库开启ssl
  • 12V转18V/2A车灯方案:宽输入电压、支持PWM调光的车灯驱动芯片FP7208
  • get post 请求
  • 如何在Anaconda中配置你的CUDA Pytorch cuNN环境(2025最新教程)
  • 关于大模型提示词设计的思路探讨
  • 软考-系统架构设计师 信息加解密技术详细讲解
  • 人工鱼群算法AFSA优化支持向量机SVM,提高故障分类精度
  • 《RAD Studio 13.0》 [DELPHI 13.0] [官方原版IOS] 下载
  • 最小曲面问题的欧拉-拉格朗日方程 / 曲面极值问题的变分法推导
  • kotlin的函数前面增加suspend关键字的作用
  • Linux vi/vim
  • 赋能高效设计:12套中后台管理信息系统通用原型框架
  • Spark 核心 RDD详解
  • 图灵奖得主萨顿演讲解读:深度学习的局限与AI新范式
  • 香港券商柜台系统搭建与开发技术分析
  • React学习教程,从入门到精通,React 组件生命周期详解(适用于 React 16.3+,推荐函数组件 + Hooks)(17)
  • EFK+DeepSeek 智能运维方案:技术架构与实施步骤
  • 零基础快速了解掌握Linux防火墙-Iptables
  • python---PyInstaller(将Python脚本打包为可执行文件)
  • Python 数据类型转换完全指南:方法与最佳实践
  • 冷压对辊矫平机:金属板材的“应力按摩师”
  • Django REST Framework响应类Response详解
  • 一款.NET开发的AI无损放大工具
  • linux安装远程桌面图形化界面以及root登录