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

稀碎从零算法笔记Day22-LeetCode:

题型:链表

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

来源:Le'e't

题目描述

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

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

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

题目思路

少有的【简单的中等题】

样例很清晰,感觉就是链表版的模拟各数累加。

笔者这边直接在原链表上进行操作,如果题目要求【不改变原链表结构】,可以自己开一个新的链表。

为了便于操作,笔者这里强行让链表1为长链表。然后可以分情况:①等长时 ②不等长时。

考虑到【进位】,可以创一个int来存一下,但要记得【进位加完一次后归零】。

等长时:遍历两个链表,指针同步走。如果最终加完后还有进位,需要创一个新结点来作为尾结点。(笔者这里事先接收了尾指针,方便操作)

不等长时,就是先按着等长来走。短的链表走到头后长链表自己一个人走(我哭死)

C++代码

笔者已经哭死了,所以上code

/*** 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 *temp1 = l1,*temp2 = l2;int len1=0,len2=0;int i=0,j=0;while(temp1 != NULL)    {len1++;temp1 = temp1->next;}while(temp2 != NULL)    {len2++;temp2 = temp2->next;}//保证l1一定是长链表 if(len1 < len2){swap(len1,len2);swap(l1,l2);}int sum=0;ListNode *ans = l1;ListNode * us;while(l1 != NULL &&l2 != NULL){if(l1 ->next == NULL)us = l1;int tempa=l1->val,tempb=l2->val,tempc=sum;l1->val = (l1->val + l2->val + sum)%10;sum = 0;sum+=((tempa+tempb+tempc)/10);l1 = l1->next;l2 = l2->next;}while(l1 != NULL){    if(l1 ->next == NULL)us = l1;int tempa=l1->val,tempc=sum;l1->val = (l1->val + sum)%10;sum=0;sum+=(tempa+tempc)/10;l1 = l1->next; }if(l1 == NULL && sum !=0){ListNode * fin = new ListNode(sum);us->next = fin;}return ans;}
};

结算页面

有待优化,感觉冗余的代码有些多。

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

相关文章:

  • Nacos下载和安装
  • pandas简介(python)
  • 个人网站制作 Part 13 添加搜索功能[Elasticsearch] | Web开发项目
  • Springboot+vue的仓库管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。
  • vue3 + vite 实现一个动态路由加载功能
  • 【征稿进行时|见刊、检索快速稳定】2024年区块链、物联网与复合材料与国际学术会议 (ICBITC 2024)
  • 若依jar包运行脚本,从零到一:用Bash脚本实现JAR应用的启动、停止与监控
  • Unix运维_FreeBSD-13.1临时环境变量设置(bin和include以及lib)
  • Apache Dolphinscheduler - 无需重启 Master-Server 停止疯狂刷日志解决方案
  • 竞争优势:大型语言模型 (LLM) 如何重新定义业务策略
  • Spring AOP和AspectJ AOP区别
  • FREERTOS信号量详解
  • 每天学习一个Linux命令之vim
  • linux环境部署
  • 上位机图像处理和嵌入式模块部署(qmacvisual图像预处理)
  • C语言内存函数详解
  • 详解Redis的持久化RDB和AOF
  • 详细分析Js中的Promise.all基本知识(附Demo)
  • const,static深度总结——c++穿透式分析
  • 快速搭建一个一元二次方程flask应用
  • O2OA红头文件流转与O2OA版式公文编辑器基本使用
  • 软件测试:C++ Google Test单元测试框架GTest
  • 大数据面试题 —— HBase
  • SCI一区 | Matlab实现GWO-TCN-BiGRU-Attention灰狼算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测
  • SpringMVC的执行原理
  • Qt + HTTP 线程交互类封装
  • GitHub Copilot+ESP开发实战-串口
  • C# 使用ffmpeg将图片保存为mp4视频
  • Java安全技术及代码审计技巧
  • C# 使用OpenCvSharp4将Bitmap合成为MP4视频的环境