珠宝玉器监测网站建设方案,百度文档怎么免费下vvv,现在什么行业发展前景最好,培 网站建设方案 doc题目描述 把题读懂后#xff0c;这道题存在两个需要解决的问题#xff1a;1.进位问题#xff1b;2.两个链表长度不一
代码
class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {//创建新链表的伪指针#xff0c;指向链表的头结点ListNode prev n…题目描述 把题读懂后这道题存在两个需要解决的问题1.进位问题2.两个链表长度不一
代码
class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {//创建新链表的伪指针指向链表的头结点ListNode prev new ListNode(0);//表示进位的值int carry 0;//定义当前正在进行两数之和的指针ListNode cur prev;while(l1 ! null || l2 ! null){//循环后假如l1或者l2出现空值就用0填补这样就解决了问题2两个链表长度不一的问题int x l1 null ? 0 : l1.val;int y l2 null ? 0 : l2.val;//进位和存到链表里的数值这三者之间的先后顺序很重要//第一先加上当前的进位计算和int sum x y carry;//第二由这个和计算给到下一位的进位carry sum / 10;//第三给到下一位的进位计算完了才轮到计算存到链表里的数值sum sum % 10;cur.next new ListNode(sum);//当前两数之和计算完了移到下一位cur cur.next;//当前数不为空时移到下一位接着计算要是当前数为空那就更方便了直接到下一次循环开始时会直接赋值为0if(l1 ! null){l1 l1.next;}if(l2 ! null){l2 l2.next;}}//当最后两个数计算完后可能会产生进位但最多也就进位1直接创建个新结点把1放进去if(carry 1){cur.next new ListNode(carry);}//返回整个链表return prev.next;}
}