赞
踩
public ListNode addTwoNumbers(ListNode l1, ListNode l2) { // 初始化头节点和尾节点,开始时都为null ListNode head = null, tail = null; // 进位,初始化为0 int jinWei = 0; // 当两个链表中的任一链表不为空时,继续循环 while(l1 != null || l2 != null){ // 获取l1的当前节点的值,如果l1为空,则取0 int n1 = l1 != null? l1.val: 0; // 获取l2的当前节点的值,如果l2为空,则取0 int n2 = l2 != null? l2.val: 0; // 计算当前两个节点值的和加上进位 int sum = n1 + n2 + jinWei; // 如果头节点为空(即刚开始创建第一个节点时) if(head == null){ // 创建新节点,值为sum的个位数,并将头节点和尾节点都指向它 head = tail = new ListNode(sum % 10); }else{ // 否则,创建新节点,并将它连接到尾节点的后面 tail.next = new ListNode(sum % 10); // 更新尾节点为新的尾节点 tail = tail.next; } // 更新进位为sum的十位数 jinWei = sum / 10; // 如果l1不为空,则移动到l1的下一个节点 if(l1 != null){ l1 = l1.next; } // 如果l2不为空,则移动到l2的下一个节点 if(l2 != null){ l2 = l2.next; } } // 如果最后还有进位(即两个链表的最高位相加后有进位) if(jinWei > 0 ){ // 创建一个新节点表示进位,并将其连接到尾节点的后面 tail.next = new ListNode(jinWei); } // 返回头节点,即新的链表的开始位置 return head; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。