力扣之两数相加

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;

	  

以上是关于力扣之两数相加的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode之两数相加反转链表少箭射球二叉树

leetcode之两数相加解题思路

leetcode之两数相加解题思路

ACM之两数相加问题

力扣两数相加

力扣两数相加