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

【LeetCode-中等题】2. 两数相加

文章目录

    • 题目
    • 方法一:借助一个进制位,以及更新尾结点
    • 方法一改进:相比较第一种,给head一个临时头节点(开始节点),最后返回的时候返回head.next,这样可以省去第一次的判断

题目

在这里插入图片描述

方法一:借助一个进制位,以及更新尾结点

在这里插入图片描述

 public static ListNode addTwoNumbers(ListNode l1, ListNode l2) {ListNode head = null;//定义结果链表ListNode tail = null;//定义尾结点int cay = 0;//定义进位数int n1 = 0;int n2 = 0;while(l1 != null || l2 != null){//若节点为空,则补0if(l1 == null) n1 = 0;else n1 = l1.val;if(l2 == null) n2 = 0;else n2 = l2.val;int sum =  n1 + n2 + cay;if (head == null) // 第一次计算答案  记录头结点head = tail = new ListNode(sum % 10);else {tail.next = new ListNode(sum % 10);tail = tail.next; //更新尾结点}cay = sum /10 ;if(l1 != null) l1 = l1.next;if(l2 != null) l2 = l2.next;}if (cay == 1) { //说明最后还有一个进位1没有记录下来  直接让尾结点去指向最后一位 1tail.next = new ListNode(1);tail.next.next = null;}return head;}

方法一改进:相比较第一种,给head一个临时头节点(开始节点),最后返回的时候返回head.next,这样可以省去第一次的判断

 			 ListNode begin = new ListNode(1);//给head一个起点
 			int sum =  n1 + n2 + cay;tail.next = new ListNode(sum % 10);//记录尾指针下一个指向tail = tail.next;  //更新尾指针一直指向结果链表尾部cay = sum /10 ;
public static ListNode addTwoNumbers(ListNode l1, ListNode l2) {ListNode begin = new ListNode(1);//给head一个起点ListNode head = begin;//定义结果链表ListNode tail = head;//定义尾结点int cay = 0;//定义进位数int n1 = 0;int n2 = 0;while(l1 != null || l2 != null){//若节点为空,则补0if(l1 == null) n1 = 0;else n1 = l1.val;if(l2 == null) n2 = 0;else n2 = l2.val;int sum =  n1 + n2 + cay;tail.next = new ListNode(sum % 10);//记录尾指针下一个指向tail = tail.next;  //更新尾指针一直指向结果链表尾部cay = sum /10 ;if(l1 != null) l1 = l1.next;if(l2 != null) l2 = l2.next;}if (cay == 1) { //说明最后还有一个进位1没有记录下来  直接让尾结点去指向最后一位 1tail.next = new ListNode(1);tail.next.next = null;}return head.next; //因为head的定义借助了begin头结点  最后结果为head后面的节点链}
http://www.lryc.cn/news/146673.html

相关文章:

  • postman接口参数化设置
  • easyexcel poi根据模板导出Excel
  • 怎么把pdf图片转换成jpg?pdf转jpg的方法分享
  • MongoDB 双机热备那篇文章是 “毒”
  • Leetcode17电话号码的组合
  • 入职一家公司只会功能测试,如何进一步提升自己?
  • WordPress导航主题源码
  • 基于ADAU1452 DSP ANC和AEC算法的实现
  • Wireshark数据抓包分析之传输层协议(TCP协议)
  • ADRV9009子卡 设计原理图:FMCJ450-基于ADRV9009的双收双发射频FMC子卡 便携测试设备
  • Linux 桌面上的 Firefox 面临着大问题
  • 查漏补缺 - 构造函数,原型,this,原型链,继承
  • C# 学习笔记--个人学习使用 <2>
  • Linux网络编程Socket通信6-Libevent移植与使用
  • c#:委托 泛型委托的使用 泛型约束
  • 大数据之linux入门
  • MPI之MPI_Sendrecv接口以及空进程概念介绍
  • Revit SDK:PointCurveCreation 创建点来拟合曲线
  • 嵌入式Linux开发实操(十五):nand flash接口开发
  • vue2 组件库之vetur提示
  • 慕课网 Go工程师 第三周 package和gomodules章节
  • 【ES6】JavaScript 中的数组方法reduce
  • 数据结构--树4.2(二叉树)
  • 详解Numpy(基于jupyter notbook)
  • uniapp实现:点击拨打电话,弹出电话号码列表,可以选择其中一个进行拨打
  • swc-loader Segmentation fault “$NODE_EXE“ “$NPM_CLI_JS“ “$@“
  • Leetcode78. 子集
  • 百度“AI智障”到AI智能体验之旅
  • R中当并行运算遇到C++函数时,让foreach+Rcpp一起工作
  • 实现带头双向循环链表