力扣之两数相加
Posted 郭梧悠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了力扣之两数相加相关的知识,希望对你有一定的参考价值。
原题出处https://leetcode-cn.com/problems/add-two-numbers/,描述如下图:
解题思路很简单:当前两个链表的节点node1和node2形成的新节点的值的算法为
//上一个节点的进位,比如3+9=12,进位为1 (进位的英文翻译carry)
int carry=(preNode1.val+preNode2)/10;
int sum = node1.val+node2.val+carry;
//比如4+6=10,去余则为0
Node newNode = New Node(sum%10)
所以完整的算法为:
public ListNode addTwoNumbers(ListNode l1, ListNode l2)
ListNode result = new ListNode();
ListNode sumNode = result;
//进位,比如3+9=12,进位1,算法是sum/10,将2存储在新节点 算法是sum%10
int carry = 0;
while(l1!=null||l2!=null||carry!=0)
int sum = 0;
if(l1!=null)
sum+=l1.val;
l1=l1.next;
if(l2!=null)
sum += l2.val;
l2 = l2.next;
//加上个循环的进位
sum+=carry;
//取当前循环的进位
carry = sum/10;
ListNode newNode = new ListNode(sum%10);
sumNode.next = newNode;
sumNode = newNode;
return result.next;
以上是关于力扣之两数相加的主要内容,如果未能解决你的问题,请参考以下文章