当前位置:网站首页>【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指向结果链表的首元节点
不使用头结点,直接返回结果链表方法
边栏推荐
- proteus数字电路仿真——入门实例
- 判断子序列 —— LeetCode-392
- 【nRF24L01 与 Arduino 连接实现无线通信】
- 【nRF24L01 connects with Arduino to realize wireless communication】
- Compatible with C51 and STM32 Keil5 installation method
- 【LeetCode】设计链表
- Application of electronic flow on business trip
- [Arduino uses a rotary encoder module]
- 振芯科技GM8285C:功能TTL转LVDS芯片简介
- 功率计,物联网,智能插座电路设计【毕业设计】
猜你喜欢
MC1496乘法器
向龙芯2K1000板子上烧写中标麒麟系统
[DS3231 RTC real-time clock module and Arduino interface to build a digital clock]
[Arduino connected to GP2Y1014AU0F dust sensor]
IoT solution
[Arduino connected to GPS module (NEO-6M) to read positioning data]
增量编译技术在Lightly中的实践
AD8361检波器
USB_ID介绍
Application of electronic flow on business trip
随机推荐
[Arduino connected to GPS module (NEO-6M) to read positioning data]
NE5532运放加法器
Type c PD 电路设计
汇编语言跳转指令总结
【科普贴】I2C接口详解——偏硬件解析
【Arduino使用旋转编码器模块】
使用pyqt弹出消息提示框
I2C无法访问ATEC508A加密芯片问题
移动云物联网预研及阿里云开发对比分析
与TI的lvds芯片兼容-GM8284DD,GM8285C,GM8913,GM8914,GM8905C,GM8906C,国腾振芯LVDS类芯片,
Typora use
回溯法 & 分支限界 - 2
openwrt RK3568_EVB移植
使用buildroot制作根文件系统(龙芯1B使用)
【plang1.4.3】语言新特性:集合
工业边缘网关究竟强大在哪里?
联阳IT66121FN提供SDI转HDMI方案分享
【多线程】线程安全保护机制
C语言教程 - 制作单位转换器
GM8775C规格书,MIPI转LVDS,MIPI转双路LVDS分享