链表相加(二)


代码求解

java 复制代码
public ListNode reverseList(ListNode pHead){

		if(pHead == null){
			return null;
		}
		ListNode pre = null;
		ListNode cur = pHead;
		ListNode next = pHead;

		while(cur!=null){
			next = cur.next;
			cur.next = pre;
			pre = cur;
			cur = next;
		}

		return pre;
	}
    
    public ListNode addInList (ListNode head1, ListNode head2) {
    // 链表1为空,直接返回链表2
    if (head1 == null) {
        return head2;
    }
    // 链表2为空,直接返回链表1
    if (head2 == null) {
        return head1;
    }

    // 反转两个链表,让低位在前(方便从低位开始相加)
    head1 = reverseList(head1);
    head2 = reverseList(head2);

    ListNode dummy = new ListNode(-1);  // 虚拟头节点:简化结果链表的头节点处理
    ListNode head = dummy;              // 结果链表的当前指针(用于挂载新节点)
    int carry = 0;                      // 进位标志

    // head1未遍历完 || head2未遍历完 || 还有进位(包含carry!=0,处理最后一位相加的进位)
    while (head1 != null || head2 != null || carry != 0) {
        // 获取当前节点的值(链表已遍历完则取0,不影响相加结果)
        int val1 = head1 == null ? 0 : head1.val;
        int val2 = head2 == null ? 0 : head2.val;

        int temp = val1 + val2 + carry;
        carry = temp / 10;  // 更新进位
        temp %= 10;         // 取当前位的结果

        // 创建当前位的节点,挂载到结果链表上
        head.next = new ListNode(temp);
        head = head.next;   // 结果链表指针后移,准备挂载下一个节点

        // 原链表指针后移
        if (head1 != null) {
            head1 = head1.next;
        }
        if (head2 != null) {
            head2 = head2.next;
        }
    }

    // 反转结果链表,恢复高位在前的格式,返回最终结果
    return reverseList(dummy.next);
}
相关推荐
星空露珠37 分钟前
迷你世界UGc3.0脚本Wiki[剧情动画模块管理接口 Timeline]
开发语言·数据结构·算法·游戏·lua
东华万里2 小时前
第31篇 数据结构入门:顺序表
数据结构·大学生专区
Vect__2 小时前
Go 数据结构 slice 深度剖析
开发语言·数据结构·golang
青山木3 小时前
Hot 100 --- LRU 缓存
java·数据结构·算法·leetcode·链表·缓存·哈希
剑挑星河月5 小时前
35.搜索插入位置
java·数据结构·算法·leetcode
闪电悠米5 小时前
力扣hot100-438.找到字符串中所有字母异位词-固定长度滑动窗口详解
linux·服务器·数据结构·算法·leetcode·滑动窗口·力扣hot100
人道领域5 小时前
【LeetCode刷题日记】51.N皇后
数据结构·算法
小陈的代码之路17 小时前
回文链表(LeetCode 234)C语言最佳解题思路
c语言·leetcode·链表
金融小师妹19 小时前
人工智能推演框架:非农降温信号如何重构黄金定价模型
数据结构·人工智能·机器学习·transformer
ysa05103021 小时前
【并查集】判环,深搜
数据结构·c++·算法·深度优先