当前位置:网站首页>【LeetCode】链表相加 进位
【LeetCode】链表相加 进位
2022-08-02 03:33:00 【EvilChou】

/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode pre = new ListNode(0); //开辟新的内存空间,pre指向该内存空间,pre是该结果链表的头节点
ListNode cur = pre; //定义一个可移动的指针,也指向该内存空间,后续添加节点依赖该指针
int carry = 0; //进位
while(l1!=null || l2!=null){
int x = l1 != null ? l1.val : 0; //获取对应位置上的值,如果某个位置上为空,则赋值为0
int y = l2 != null ? l2.val : 0;
int sum = x + y + carry; //l1和l2对应位置上的值以及进位的值相加
carry = sum / 10; //获取每次相加后的进位
sum = sum % 10; //获取进位后的值
cur.next = new ListNode(sum); //创建一个新的节点,该节点的值为相加进位后的值,并且结果链表的指针指向该节点
cur = cur.next; //结果链表指针向前移动,pre头指针没有动
if(l1!= null){
l1 = l1.next;
}
if(l2!= null){
l2 = l2.next;
}
}
if(carry == 1){
cur.next = new ListNode(carry); //如果最后加完后还有进位(进位值一定为1),则创建新的节点,保存该节点
}
return pre.next;//返回结果链表,因为pre指向该链表头指针,头指针处的值为0,头指针的下一个节点才是结果链表的首元节点
}
}开辟新的链表空间 ListNode pre = new ListNode(0) pre为头节点指针

最后返回的是return pre.next pre.next指向结果链表的首元节点
不使用头结点,直接返回结果链表方法

边栏推荐
猜你喜欢

GM7150 CVBS转BT656视频解码芯片详细内容及设计要求

Personal image bed construction based on Alibaba Cloud OSS+PicGo

idea中创建jsp项目详细步骤
![[Popular Science Post] I2C Communication Protocol Detailed Explanation - Partial Software Analysis and Logic Analyzer Example Analysis](/img/be/9b23a798557222bab68c67bf9170af.png)
[Popular Science Post] I2C Communication Protocol Detailed Explanation - Partial Software Analysis and Logic Analyzer Example Analysis

WebApp 在线编程成趋势:如何在 iPad、Matepad 上编程?

Lightly 支持 Markdown 文件在线编写(文中提供详细 Markdown 语法)

使用飞凌嵌入式IMX6UL-C1板子——qt+opencv环境搭建

MPU6050 accelerometer and gyroscope sensor is connected with the Arduino

AD8361检波器

使用批处理脚本修改hosts文件
随机推荐
向龙芯2K1000板子上烧写中标麒麟系统
【Popular Science Post】UART Interface Communication Protocol
USB HUB USB集线器电路设计
NSIS来自己设定快捷方式的图标
龙讯LT6911系列C/UXC/UXB/GXC/GXB芯片功能区别阐述
振芯GM7123C:功能RGB转VGA芯片方案简介
NE5532运放加法器
为什么D类音频功放可以免输出滤波器
使用飞凌嵌入式IMX6UL-C1板子——qt+opencv环境搭建
龙芯2K1000使用nfs挂载文件系统进行使用
GM8775C规格书,MIPI转LVDS,MIPI转双路LVDS分享
vector的使用和模拟实现:
【plang1.4.3】语言新特性:集合
[Popular Science Post] I2C Communication Protocol Detailed Explanation - Partial Software Analysis and Logic Analyzer Example Analysis
TeamCode 产品 UI 全新升级,快来体验吧
引擎开发日志:重构骨骼动画系统
Website development plan research
使用Vercel托管自己的网站
Mac安装MySQL详细教程
远程调试PLC,到底如何操作?