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

445、两数相加 II

题目:

解答:

反转链表,head指向最低位,开始逐位相加,并且需要注意是否有进位。计算结束后再反转链表。

注意其中是否有l1/l2为空的情况

class Solution {//反转链表函数ListNode* rev(ListNode* head){//长度为0或者1,不翻转if(head==nullptr || head->next==nullptr)return head;//非空时,递归过程中new_head一直为原来链表末节点,不变auto new_head = rev(head->next);//head下一个节点指向自己head->next->next=head;//head指向空,保证当前为末尾节点head->next=nullptr;return new_head;}//两数相加,carry记录进位情况ListNode* addtwo(ListNode* l1,ListNode *l2,int carry=0){//l1,l2全空,如果有进位则创建新的node为1,否则返回空指针if(l1==nullptr && l2==nullptr){return carry ? new ListNode(carry):nullptr;}//保证l1非空,简化代码if(l1==nullptr)swap(l1,l2);//l2存在则+l2的val,否则+0carry+=l1->val+(l2?l2->val:0);//可能产生两位数,取余,l1的next递归,carry/10存储前一位是否进位l1->val=carry%10;l1->next=addtwo(l1->next,(l2?l2->next:nullptr),carry/10);return l1;}public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {l1=rev(l1);l2=rev(l2);auto l3=addtwo(l1,l2);return rev(l3);}
};

时间复杂度O(n) n为较长的链表长度

空间复杂度O(n)

http://www.dtcms.com/a/286699.html

相关文章:

  • 数字人直播:开启直播行业新纪元​
  • 基于LiteNetLib的Server/Client Demo
  • Android各版本适配方案总结归纳
  • 企业网站建设全攻略
  • Linux系统之:进程概念
  • JavaSE -- 对象序列化和反序列化详细讲解
  • HarmonyOS-ArkUI Web控件基础铺垫4--TCP协议- 断联-四次挥手解析
  • 全国计算机等级考试二级题库【C语言】:程序修改题型——结构体、可变数组、链表 自制答案详解合辑
  • 深度学习入门-深度学习简介
  • 屏显智能电子锁语音芯片方案新选择
  • Hinge Loss(铰链损失函数)详解:SVM 中的关键损失函数
  • C++实现单层时间轮
  • UE5网络联机函数
  • RSTP技术
  • Thread,ThreadLocal,ThreadLocalMap 三者的关系, 以及在实际开发中的应用【AI记录用】
  • mysql复制延迟如何处理
  • js中的微任务和宏任务的理解
  • python 实现将文件的非零数据扇区进行提取,并以偏移地址进行命名保存
  • AI(day10)模块化编程概念(模块、包、导入)及常见系统模块总结和第三方模块管理
  • AE PDW2200电源射频手侧使用安装说明含电路图
  • 70 gdb attach $pid, process 2021 is already traced by process 2019
  • 反序列化漏洞3-反序列化漏洞讲解演示
  • 4. PyQGIS整体框架详解
  • Agent AI(3):Agent分类
  • day30——零基础学嵌入式之线程2.0
  • 多线程-2-线程间通信
  • 推荐算法召回:架构理解
  • 【RK3576】【Android14】开发环境搭建
  • Windows 下 VS2019 编译 libevent-2.1.10 库
  • React 实现人员列表多选、全选与取消全选功能