标签:p2 p1 val sum next addTwoNumbers carry LeetCode
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
// 思路: 在原链表l1上逆序相加,得到逆序的相加链表
// 要考虑:(1) 进位(尤其是最后有进位,需要新建一个Listnode); (2) 链表长度不对齐
// 时空分析:(1) O(max(len(l1),len(l2))); (2) O(1)
// 返回: 链表头指针
ListNode p1 = l1;
ListNode p2 = l2;
ListNode res = l1;
int carry = 0;
int sum = 0;
int temp = 0;
while(p1.next!=null && p2.next!=null){
temp = p1.val+p2.val+carry;
sum = temp%10;
carry = temp/10;
p1.val = sum;
p1 = p1.next;
p2 = p2.next;
}
// 两个链表当前的数字(包括两个链表长度都为1的情况)
temp = carry+p1.val+p2.val;
sum = temp%10;
carry = temp/10;
p1.val = sum;
if(p2.next!=null){
// 如果len(l2)>len(l1)
p1.next=p2.next;
}
while(p1.next!=null&&carry!=0){
p1 = p1.next;
temp = p1.val+carry;
sum = temp%10;
carry = temp/10;
p1.val =sum;
}
if(carry!=0){
p1.next = new ListNode(carry,null);
}
return res;
}
标签:p2,p1,val,sum,next,addTwoNumbers,carry,LeetCode 来源: https://www.cnblogs.com/helloworldToDu/p/15831091.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。