首页 > 学院 > 开发设计 > 正文

LeetCode题解-2-Add Two Numbers

2019-11-08 03:05:14
字体:
来源:转载
供稿:网友

解题思路

这个题目也是比较简单的。主要需要考虑的是如何处理l1和l2长度不一致的情况,进位的处理,还有特别考虑最后一次进位的情况。

为了简化处理,我采用了一个哑结点作为head,用carry下次操作的进位值,默认是0. 然后从头开始遍历,每次的和等于上一次进位加上2个结点的值(如果存在的话),如果其中一个结点为空,就当值为0处理,直到2个结点都为空。最后2个结点为空时判断进位是否为1,如果是就增加多一个结点。

最终,返回哑结点的下一个结点就可以了。

参考源码

public class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode head = new ListNode(0); ListNode curr = head; int carry = 0; while (l1 != null || l2 != null) { int sum = carry; if (l1 != null) { sum += l1.val; l1 = l1.next; } if (l2 != null) { sum += l2.val; l2 = l2.next; } if (sum >= 10) { carry = 1; sum -= 10; } else { carry = 0; } curr.next = new ListNode(sum); curr = curr.next; } if (carry != 0) { curr.next = new ListNode(carry); } return head.next; }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表