admin管理员组

文章数量:1438186

链表系列一>两数相加

题目:

链接: link

解析:

方法:

代码:

代码语言:javascript代码运行次数:0运行复制
/**
 * 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 cur1 = l1, cur2 = l2;
        ListNode newhead = new ListNode(0);
        int t = 0;

        //用来尾插操作的指针
        ListNode prev = newhead;

        while(cur1 != null ||  cur2 != null || t != 0){
            //先加第一个链表
           if(cur1 != null){
                t += cur1.val;
                cur1 = cur1.next;
           }

            //先加第二个链表
           if(cur2 != null){
                t += cur2.val;
                cur2 = cur2.next;
           }

           //把t尾插到虚拟头节点
           prev.next = new ListNode(t%10);//去t的个位创建新节点
           t /= 10;
           prev = prev.next;
        }

        return newhead.next;
    }
}

链表常用技巧:

1.可以创建虚拟头节点来进行最后的返回,因为题目的第一个节点一般都存有数据

2.创建新的引用来进行变量,来进行头插和尾插

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-04-23,如有侵权请联系 cloudcommunity@tencent 删除变量技巧链表数据指针

本文标签: 链表系列一>两数相加