您当前的位置: 首页 > 

郭梧悠

暂无认证

  • 2浏览

    0关注

    402博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

力扣之两数相加

郭梧悠 发布时间:2022-03-02 17:04:49 ,浏览量:2

原题出处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;

	 } 
关注
打赏
1663674776
查看更多评论
立即登录/注册

微信扫码登录

0.0413s