news 2026/11/5 3:06:16

【剑斩OFFER】算法的暴力美学——两数相加

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【剑斩OFFER】算法的暴力美学——两数相加

一、题目描述

二、算法原理

思路:模拟

因为本来我们是要把链表里面的值进行翻转的,但是题目已经帮我们翻转了,所以可以直接进行加法操作就行,不过要考虑进位问题,我们使用一个值 t 来保存这个两个链表加的值,假设 t = 12 ,那么这个最终的结果是:t % 10 = 2,此时进行进位操作: t = t / 10 = 1;然后不断的进行加法运算直到:运算到第一个和第二个链表的最后值,而且当 t != 0 时,代表着加法运算还没有结束。

三、代码实现

最佳实现:

/** * 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) { int t = 0;//进位值 ListNode* newhead = new ListNode(0);//一个新链表的头结点,这个头结点用于返回新链表的第一个值 ListNode* cur1 = l1,*cur2 = l2; ListNode* prev = newhead;//链表的最后一个结点,用于链接加入的值 while(cur1 || cur2 || t)//只要符合其中的任意一个条件,就代表着这个链表没有结束加法运算 { if(cur1) { t += cur1->val; cur1 = cur1->next; } if(cur2) { t += cur2->val; cur2 = cur2->next; } prev->next = new ListNode(t % 10);//链接新的结点,保存该位的值 prev = prev->next;//尾结点进行更新 t = t / 10;//保存进位值 } return newhead->next; } };

代码探索:

/** * 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* phead = new ListNode; phead->next = nullptr; ListNode* cur1 = l1,*cur2 = l2; ListNode* phead_tmp = phead; int tmp = 0; while(cur1 != nullptr && cur2 != nullptr) { tmp += cur1->val + cur2->val; ListNode* node = new ListNode; node->val = tmp % 10; node->next = nullptr; phead_tmp->next = node; phead_tmp = node; node = nullptr; tmp /= 10; cur1 = cur1 -> next; cur2 = cur2 -> next; } while(cur1 != nullptr) { tmp += cur1->val; ListNode* node = new ListNode; node->val = tmp % 10; node->next = nullptr; phead_tmp->next = node; phead_tmp = node; node = nullptr; tmp /= 10; cur1 = cur1->next; } while(cur2 != nullptr) { tmp += cur2->val; ListNode* node = new ListNode; node->val = tmp % 10; node->next = nullptr; phead_tmp->next = node; phead_tmp = node; node = nullptr; tmp /= 10; cur2 = cur2->next; } if(tmp) { ListNode* node = new ListNode; node->val = tmp; node->next = nullptr; phead_tmp->next = node; node = nullptr; } return phead->next; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/2 8:02:12

3分钟搞定MobileNetV2部署:从零到推理的极速指南

3分钟搞定MobileNetV2部署:从零到推理的极速指南 【免费下载链接】models A collection of pre-trained, state-of-the-art models in the ONNX format 项目地址: https://gitcode.com/gh_mirrors/model/models 还在为深度学习模型部署头疼?Mobi…

作者头像 李华
网站建设 2026/11/5 1:42:24

Open-AutoGLM 为何被视为AutoGLM终极形态:对比5种主流框架的压倒性优势

第一章:Open-AutoGLM 技术原理Open-AutoGLM 是一个基于自回归语言建模与图神经网络融合的开源框架,旨在实现复杂任务的自动化推理与生成。其核心技术结合了大语言模型(LLM)的语义理解能力与图结构数据的拓扑表达优势,通…

作者头像 李华
网站建设 2026/11/3 16:25:22

中国情绪图片库:如何快速获取专业的情绪研究素材?

中国情绪图片库:如何快速获取专业的情绪研究素材? 【免费下载链接】中国情绪图片库下载 “中国情绪图片库.rar”是一个精心挑选的图片集合,旨在通过视觉刺激来引发特定的情绪反应。这些图片经过严格筛选,确保其能够有效地激发观察…

作者头像 李华
网站建设 2026/11/4 12:04:22

【紧急通知】Open-AutoGLM启动配置存在高危漏洞?最新安全启动规范发布

第一章:Open-AutoGLM启动配置漏洞事件概述近期,开源项目 Open-AutoGLM 被曝出存在严重的启动配置漏洞,该问题可能导致未授权用户在默认配置下远程执行任意代码。此漏洞源于服务启动时未正确校验配置文件的权限设置,且默认开启了调…

作者头像 李华
网站建设 2026/11/2 3:42:29

SeedVR2视频修复终极指南:3分钟快速实现视频超清化

SeedVR2视频修复终极指南:3分钟快速实现视频超清化 【免费下载链接】SeedVR2-7B 项目地址: https://ai.gitcode.com/hf_mirrors/ByteDance-Seed/SeedVR2-7B 还在为AI生成的视频模糊不清而烦恼吗?🤔 字节跳动开源的SeedVR2模型为你提供…

作者头像 李华
网站建设 2026/11/4 0:06:14

蓝绿部署实践:零停机更新TensorFlow推理服务

蓝绿部署实践:零停机更新TensorFlow推理服务 在推荐系统、智能客服或金融风控这类对稳定性要求极高的场景中,一次模型上线导致的服务抖动可能直接引发用户投诉甚至业务损失。而现实却是——模型需要频繁迭代,数据分布持续漂移,算法…

作者头像 李华