当前位置: 首页 > 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;}
}

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

相关文章:

  • 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++函数调用运算符及类型转换运算符重载
  • 线程同步学习
  • JSP与JSTL:EL表达式与MVC分层模式的完美结合
  • 3D个人简历网站 5.天空、鸟、飞机
  • 院校机试刷题第五天:1912循环位移、1913礼炮车
  • SQL语句执行问题
  • 使用 Kaniko来构建镜像
  • Mysql 索引概述
  • Vue-事件修饰符
  • 怎么用Origin画出MATLAB效果的3D时频图
  • 哈希表(2):