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

2.单链表两数相加(java)

题目描述:

分析:

1.首先创建一个虚拟节点 ListNode dummy = new ListNode(-1);再创建一个节点来保存虚拟节点,因为使用虚拟节点来移动,如果不保存,最后就会丢失。保存虚拟节点:ListNode p=dummy;

2.进位标志:int carry=0; 

    接收两个单链表:ListNode head1=l1;  ListNode head2=l2;

3.用一个新值保存相加结果,新值初始为0:int newVal=0;

4. 循环:当head1不空或者head2不空或carry>1时:

         while(head1 !=null || head2 !=null || carray>0)

        这里对carry有要求是因为:加到最后一位时需要进位,所以只要carry>1就需要处理

        加和:newVal=head1.val+head2.val+carry

        节点移动:使用三目运算符:? 

                          非空:节点=节点.next    空:null

5.最后返回头节点:return p.next;

java代码如下:

class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {ListNode dummy=new ListNode(-1);ListNode p=dummy;ListNode head1=l1;ListNode head2=l2;int carry=0;int newVal=0;while(head1!=null || head2!=null || carry>0){int val1=head1!=null ? head1.val:0;int val2=head2!=null ? head2.val:0;newVal=val1+val2+carry;carry=newVal/10;newVal%=10;dummy.next=new ListNode(newVal);head1=head1!=null ? head1.next: null;head2=head2!=null ? head2.next: null;dummy=dummy.next;}return p.next;}
}

相关文章:

  • SpringBoot--自动配置原理详解
  • 从专家编码到神经网络学习:DTM 的符号操作新范式
  • FauxGen:一款由 CodeBuddy 主动构建的假数据生成器
  • 【算法】分支限界法和贪心、动态规划、回溯、分治法的区别是
  • 强化学习笔记(一)基本概念
  • 多模态学习(三)—— ROPE位置编码:从理论到实践
  • 文字溢出省略号显示
  • React 中,闭包陷阱
  • 8天Python从入门到精通【itheima】-14~16
  • 10 分钟打造一款超级马里奥小游戏,重拾20 年前的乐趣
  • Baklib知识中台构建企业智能服务新引擎
  • Linux安全篇 --firewalld
  • 使用教程:8x16模拟开关阵列可级联XY脚双向导通自动化接线
  • 江协科技GPIO输入输出hal库实现
  • 每日Prompt:生成自拍照
  • YOLOv8 目标检测算法深度解析
  • flutter长列表 ListView、GridView、SingleChildScrollView、CustomScrollView区别
  • 汽车Wafer连接器:工业设备神经网络的隐形革命者
  • 豆粕ETF投资逻辑整理归纳-20250511
  • c++函数调用运算符及类型转换运算符重载
  • 2人恶意传播刘国梁谣言被处罚,媒体:以法律利剑劈谣斩邪,加快推进依法治体
  • 80后女博士黄双燕拟提名为内蒙古盟市政府(行署)副职人选
  • 上市公司重大资产重组新规九要点:引入私募“反向挂钩”,压缩审核流程
  • 江西4人拟任县(市、区)委书记,其中一人为“80后”
  • 习近平在第三十五个全国助残日到来之际作出重要指示
  • 一船明月过沧州:为何这座城敢称“文武双全”?